मैं कार्योंडेटाफ्रेम की प्रत्येक पंक्ति में एन फ़ंक्शंस की एक सूची लागू करें?
funs <- list(fn1 = function(x) x^2,
fn2 = function(x) x^3,
fn3 = function(x) sin(x),
fn4 = function(x) x+1)
#in reality these are all f = splinefun()
की एक सूची है और मैं एक dataframe है:
mydata <- data.frame(x1 = c(1, 2, 3, 2),
x2 = c(3, 2, 1, 0),
x3 = c(1, 2, 2, 3),
x4 = c(1, 2, 1, 2))
#actually a 500x15 dataframe of 500 samples from 15 parameters
मैं पंक्तियों में से प्रत्येक के लिए, मैं में से प्रत्येक पर समारोह जे मूल्यांकन करना चाहते हैं जे कॉलम और परिणाम योग:
unlist(funs)
attach(mydata)
a <- rep(NA,4)
for (i in 1:4) {
a[i] <- sum(fn1(x1[i]), fn2(x2[i]), fn3(x3[i]), fn4(x4[i]))
}
मैं इसे कुशलतापूर्वक कैसे कर सकता हूं? क्या plyr
कार्यों को लागू करने के लिए यह एक उचित अवसर है? यदि हां, तो कैसे?
बोनस प्रश्न: a[4]
NA
क्यों है?
क्या यह plyr
से फ़ंक्शंस का उपयोग करने के लिए उपयुक्त समय है, यदि ऐसा है, तो मैं ऐसा कैसे कर सकता हूं?
@abe तीसरे कोड स्निपेट के लिए, आपको या तो 'अनलिस्ट (मज़ेदार)' और 'संलग्न करें (mydata)' या 'मज़े $ fn1' और' mydata $ x1' –
@ सुधार के लिए डेविड धन्यवाद का उपयोग करें, I इसे प्रतिबिंबित करने के लिए कोड बदल दिया है- लेकिन यह वास्तव में उस गड़बड़ी है जिसे मैं टालना चाहता हूं। – Abe
ठीक है, बोनस बिंदु के लिए, जवाब यह है कि mydata $ x4 या उस डेटाफ्रेम के किसी भी कॉलम में कोई चौथा तत्व नहीं है। एक और टिप्पणी .. बस अनलिस्ट (मज़ेदार) टाइप करना कुछ भी नहीं करता है जब तक कि आप कुछ नतीजे निर्दिष्ट न करें। कार्यात्मक प्रोग्रामिंग में आपका स्वागत है। –