आप मिल क्या आप द्वारा चाहता था सकता है:
model$call
# lm(formula = formula)
और अगर आप क्या मैं पता चला तो देखना चाहते हैं का उपयोग करें:
str(model)
जब से तुम 'सूत्र' (के बुरे विकल्प पारित कर दिया रास्ते से नाम) कॉलिंग पर्यावरण से आपको तब पारित वस्तु से निकालने की आवश्यकता हो सकती है:
eval(model$call[[2]])
# z ~ x + y
@JPM एसी ने एक और कॉम्पैक्ट विधि की पेशकश की: formula(model)
। formula.lm
फ़ंक्शन द्वारा उपयोग की जाने वाली तंत्र को देखने के लायक भी है। formula
नामक फ़ंक्शन सामान्य है और आप S3 विधियों को परिभाषित करने के लिए methods(formula)
का उपयोग करते हैं। तो यह "$" उपयोग कर रहा है बल्कि कॉल से खींच से सूची आइटम "सूत्र" का नाम निकालने के लिए
> getAnywhere(formula.lm)
A single object matching ‘formula.lm’ was found
It was found in the following places
registered S3 method for formula from namespace stats
namespace:stats
with value
function (x, ...)
{
form <- x$formula
if (!is.null(form)) {
form <- formula(x$terms)
environment(form) <- environment(x$formula)
form
}
else formula(x$terms)
}
<bytecode: 0x36ff26158>
<environment: namespace:stats>
: चूंकि formula.lm
विधि अपने अंत में एक तारक है, तो आप `getAnywhere में लपेट की जरूरत है । यदि $ फॉर्मूला आइटम गुम है (जो आपके मामले में है) तो यह formula(x$terms)
के साथ बदल देता है जो मुझे संदेह है कि formula.default
पर कॉल कर रहा है और उस फ़ंक्शन के ऑपरेशन को देखकर केवल ऑब्जेक्ट के वातावरण को समायोजित किया जा रहा है।
स्रोत
2012-03-14 00:29:32
जवाब देने के लिए धन्यवाद - मैं वास्तव में फ़ॉर्मूला ऑब्जेक्ट "फॉर्मूला" कैसे एक्सेस करूं? अगर मैं जानकारी का प्रयास करता हूं <- मॉडल $ कॉल, जानकारी $ फॉर्मूला सिर्फ मुझे एक प्रतीक वस्तु "फॉर्मूला" देता है। – mike
मैं 'मॉडल $ कॉल [[2]] 'के बजाय' as.list (मॉडल $ कॉल) $ फॉर्मूला' का सुझाव दूंगा। – flodel
@ माइक: मुझे यकीन नहीं है कि आप क्या पूछ रहे हैं। आप ही वह व्यक्ति हैं जिसने अपना फॉर्मूला, "फॉर्मूला" कॉल करने का निर्णय लिया है, और उसके बाद इसे 'एलएम' नामित तर्क के रूप में पारित किया है। 'भाग्य :: भाग्य (" कुत्ता ") 'निश्चित रूप से यहां लागू होता है। –