में भविष्यवाणी का उपयोग कर रहा पैकेज NLME निम्नलिखित कोड का उपयोग कर के साथ एक समस्या है:NLME वस्तुओं के साथ एक समारोह कॉल और एक सूत्र
library(nlme)
x <- rnorm(100)
z <- rep(c("a","b"),each=50)
y <- rnorm(100)
test.data <- data.frame(x,y,z)
test.fun <- function(test.dat)
{
form <- as.formula("y~x")
ran.form <- as.formula("~1|z")
modell <- lme(fixed = form, random=ran.form, data=test.dat)
pseudo.newdata <- test.dat[1,]
predict(modell, newdata= pseudo.newdata) ###THIS CAUSES THE ERROR!
}
test.fun(test.data)
कारणों की भविष्यवाणी एक त्रुटि और मैं पहले से ही पाया क्या मूल रूप से यह कारण बनता है।
मॉडेल ऑब्जेक्ट सहेजता है कि इसे कैसे कहा जाता है और भविष्यवाणी भविष्यवाणी करने के लिए प्रतीत होती है लेकिन फार्मूला ऑब्जेक्ट्स फॉर्म और रन.फॉर्म को खोजने में असमर्थ है क्योंकि यह सही नामस्थान में उनकी तलाश नहीं करता है। वास्तव में, मैं ऐसा करने से समस्या से बचने कर सकते हैं: हालांकि
attach(environment(form), warn.conflicts = FALSE)
predict(modell, newdata= pseudo.newdata)
detach()
मेरे दीर्घकालिक लक्ष्य डिस्क के लिए मॉडल को बचाने और उन्हें बाद में उपयोग करने के लिए है। मुझे लगता है कि मैं फॉर्मूला ऑब्जेक्ट्स को भी सहेजने की कोशिश कर सकता हूं, लेकिन यह समस्या से निपटने के लिए मुझे बहुत परेशान और बोझिल तरीके से मारता है।
मैं उन्हें स्पष्ट रूप से लिखने के बजाय स्वचालित रूप से जेनरेट किए गए फॉर्मूला ऑब्जेक्ट्स के साथ काम करता हूं क्योंकि मैं बैच प्रक्रिया में विभिन्न परिभाषाओं के साथ कई मॉडल बनाते हैं, इसलिए मैं उनसे नहीं बच सकता। तो मेरा आदर्श समाधान एलएमई ऑब्जेक्ट बनाने का एक तरीका होगा ताकि मैं फॉर्मूला ऑब्जेक्ट को बाद में भूल सकूं और "बस काम करता है" की भविष्यवाणी कर सकूं। किसी भी मदद के लिए धन्यवाद।
+1 'do.call' – Andrie
का अच्छा उपयोग ब्रायन रिपली ने मुझे 2003 में eval का उपयोग करके एक समान चाल सिखाई। चूंकि मैं इसे अक्सर इस्तेमाल कर रहा हूं, हमने इसे "रिपली गेम" नाम दिया है। http://finzi.psych.upenn.edu/R/Rhelp02a/archive/16599.html –
+1 यह मेरे साथ हैक करना शुरू करने से काफी बेहतर है, जो 'मॉडेल <- lapply (modell $ call' जैसा था , eval.parent) '(यूघ)। यह बहुत बुरा है कि यह सामान जरूरी है, यद्यपि ... मॉडलिंग ढांचे के कुछ डिजाइन (अनावश्यक रूप से ??) नाजुक है ... –