आर

2009-08-19 11 views
10

में उपयोगकर्ता परिभाषित कार्यों में सूत्र आर आर सांख्यिकीय और ग्राफिकल कार्यों की एक बहुत ही उपयोगी विशेषता है। हर किसी की तरह, मैं इन कार्यों का एक उपयोगकर्ता हूं। हालांकि, मैंने कभी ऐसा फ़ंक्शन नहीं लिखा है जो फ़ॉर्मूला ऑब्जेक्ट को तर्क के रूप में लेता है। मैं सोच रहा था कि क्या कोई मेरी मदद कर सकता है, या तो आर प्रोग्रामिंग के इस तरफ एक पठनीय परिचय, या एक आत्मनिर्भर उदाहरण देकर।आर

उत्तर

6

आप सूत्र का मूल्यांकन करने के model.matrix() और model.frame() उपयोग कर सकते हैं:

lm1 <- lm(log(Volume) ~ log(Girth) + log(Height), data=trees) 
print(lm1) 

form <- log(Volume) ~ log(Girth) + log(Height) 

# use model.matrix 
mm <- model.matrix(form, trees) 
lm2 <- lm.fit(as.matrix(mm), log(trees[,"Volume"])) 
print(coefficients(lm2)) 

# use model.frame, need to add intercept by hand 
mf <- model.frame(form, trees) 
lm3 <- lm.fit(as.matrix(data.frame("Intercept"=1, mf[,-1])), mf[,1]) 
print(coefficients(lm3)) 

जो पैदावार

Call: lm(formula = log(Volume) ~ log(Girth) + log(Height), data = trees) 

Coefficients: (Intercept) log(Girth) log(Height) 
     -6.63   1.98   1.12 

(Intercept) log(Girth) log(Height) 
    -6.632  1.983  1.117 
Intercept log.Girth. log.Height. 
    -6.632  1.983  1.117 
+1

धन्यवाद, बहुत ही दिलचस्प। मैं समझता हूं कि क्यों ग्लैमनेट या थ्रू पैकेज इस क्षमता की पेशकश नहीं कर सकते हैं: यह पैकेज मैट्रिक्स में स्पैर मैट्रिक्स का उपयोग करता है, जिसका मॉडल.मैट्रिक्स() के साथ इलाज नहीं किया जा सकता है। – gappy