इसने वास्तव में आर कोड को डीबग करने की मेरी क्षमता को चुनौती दी है।ऑब्जेक्ट को किसी फ़ंक्शन के अंदर ddply के साथ त्रुटि नहीं मिली
मैं ddply()
का उपयोग करना चाहता हूं ताकि समान कॉलम को क्रमशः नामित किया जा सके; जैसे। ए, बी, सी। ऐसा करने के लिए मैं बार-बार कॉलम नाम को एक स्ट्रिंग के रूप में पास करना चाहता हूं और फ़ंक्शन को संदर्भित करने की अनुमति देने के लिए eval(parse(text=ColName))
का उपयोग करना चाहता हूं। मैंने इस तकनीक को एक और जवाब से पकड़ लिया।
और यह तब तक अच्छा काम करता है जब तक कि मैं ddply()
किसी अन्य फ़ंक्शन के अंदर नहीं डालता। यहां नमूना कोड है:
# Required packages:
library(plyr)
myFunction <- function(x, y){
NewColName = "a"
z = ddply(x, y, summarize,
Ave = mean(eval(parse(text=NewColName)), na.rm=TRUE)
)
return(z)
}
a = c(1,2,3,4)
b = c(0,0,1,1)
c = c(5,6,7,8)
df = data.frame(a,b,c)
sv = c("b")
#This works.
ColName = "a"
ddply(df, sv, summarize,
Ave = mean(eval(parse(text=ColName)), na.rm=TRUE)
)
#This doesn't work
#Produces error: "Error in parse(text = NewColName) : object 'NewColName' not found"
myFunction(df,sv)
#Output in both cases should be
# b Ave
#1 0 1.5
#2 1 3.5
कोई विचार? समारोह के अंदर भी NewColName परिभाषित किया गया है!
मैंने सोचा कि इस प्रश्न का उत्तर, loops-to-create-new-variables-in-ddply, मेरी मदद कर सकता है लेकिन मैंने आज के लिए पर्याप्त सिर टक्कर लगी है और अब मेरा हाथ उठाने और मदद मांगने का समय है।
मुझे संदेह है कि समाधान को @ हैडली फ़ंक्शन की आवश्यकता हो सकती है :-) –
इन सभी को आजमाने में बहुत अच्छा प्रयास। ग्रुप हेड बैंगिंग की हमेशा सराहना की जाती है ...... मैं अपनी आत्मा –