से फॉर्मूला में चर निकालें मेरे पास एक सूत्र है जिसमें कुछ शर्तें और डेटा फ्रेम (पहले model.frame()
कॉल का आउटपुट) शामिल है जिसमें उन सभी शर्तों और कुछ और शामिल हैं। मैं मॉडल फ्रेम का सबसेट चाहता हूं जिसमें सूत्र में दिखाई देने वाले चर शामिल हैं।डेटा फ्रेम
ff <- log(Reaction) ~ log(1+Days) + x + y
fr <- data.frame(`log(Reaction)`=1:4,
`log(1+Days)`=1:4,
x=1:4,
y=1:4,
z=1:4,
check.names=FALSE)
वांछित परिणाम fr
शून्य से z
स्तंभ (fr[,1:4]
धोखा दे रही है - मैं एक कार्यक्रम संबंधी समाधान की जरूरत है ...) है
कुछ रणनीतियों ऐसा नहीं काम:
fr[all.vars(ff)]
## Error in `[.data.frame`(fr, all.vars(ff)) : undefined columns selected
(क्योंकि all.vars()
"Reaction"
, log("Reaction")
नहीं)
stripwhite <- function(x) gsub("(^ +| +$)","",x)
vars <- stripwhite(unlist(strsplit(as.character(ff)[-1],"\\+")))
fr[vars]
## Error in `[.data.frame`(fr, vars) : undefined columns selected
(क्योंकि +
पर विभाजन log(1+Days)
शब्द को विभाजित करता है)।
मैं सूत्र के पार्स पेड़ से नीचे उतर के बारे में सोच कर दिया गया है:
ff[[3]] ## log(1 + Days) + x + y
ff[[3]][[1]] ## `+`
ff[[3]][[2]] ## log(1 + Days) + x
लेकिन मैं नहीं मिला है एक समाधान एक साथ रखा, और ऐसा लगता है जैसे मैं एक खरगोश की मांद नीचे जा रहा हूँ। विचार?
मुख्य चर की तरह लगता है जो आपको समस्याएं पैदा कर रहा है 'लॉग (1 + दिन) 'है। क्या आपको इसे कॉल करना है या आप बस एक अलग नाम का उपयोग कर सकते हैं? – Thomas
'attr (terms.formula (ff)," term.labels ") के बारे में क्या? –
मैं एक सामान्य समाधान के साथ आने की कोशिश कर रहा हूं। इसलिए, कुछ भी जो 'मॉडल में दिखाया जा सकता है।एक कानूनी सूत्र से उत्पन्न फ्रेम() 'को संभालना है। वह समस्या का हिस्सा है। –