मेरे पास कई कॉलम के साथ एक डेटाफ्रेम है। डेटाफ्रेम में प्रत्येक पंक्ति के लिए, मैं पंक्ति पर एक फ़ंक्शन को कॉल करना चाहता हूं, और फ़ंक्शन का इनपुट उस पंक्ति से कई कॉलम का उपयोग कर रहा है। उदाहरण के लिए, मान लें कि मेरे पास यह डेटा है और यह परीक्षण है जो दो आर्गन स्वीकार करता है:
> df <- data.frame(x=c(1,2), y=c(3,4), z=c(5,6))
> df
x y z
1 1 3 5
2 2 4 6
> testFunc <- function(a, b) a + b
मान लें कि मैं इस परीक्षण को कॉलम x और z पर लागू करना चाहता हूं। तो, पंक्ति 1 के लिए मुझे 1 + 5 चाहिए, और पंक्ति 2 के लिए मुझे 2 + 6 चाहिए। क्या लूप के लिए लिखने के बिना ऐसा करने का कोई तरीका है, शायद लागू फ़ंक्शन परिवार के साथ?
मैंने यह कोशिश की:
> df[,c('x','z')]
x z
1 1 5
2 2 6
> lapply(df[,c('x','z')], testFunc)
Error in a + b : 'b' is missing
लेकिन त्रुटि मिली, कोई विचार?
संपादित करें: मैं जिस वास्तविक फ़ंक्शन को कॉल करना चाहता हूं वह एक साधारण योग नहीं है, लेकिन यह power.t.test है। मैंने उदाहरण प्रयोजनों के लिए a + b का उपयोग किया। अंतिम लक्ष्य कुछ ऐसा करने में सक्षम होना है (स्यूडोकोड में लिखा गया है):
df = data.frame(
delta=c(delta_values),
power=c(power_values),
sig.level=c(sig.level_values)
)
lapply(df, power.t.test(delta_from_each_row_of_df,
power_from_each_row_of_df,
sig.level_from_each_row_of_df
))
जहां परिणाम df के प्रत्येक पंक्ति के लिए power.t.test के लिए आउटपुट का वेक्टर है।
dplyr
।