एक समारोह दिया

 power <- function(x,a,b) b*x^a

मुझे पता है कि, इसे power(c(1:10),2,1.5) के साथ कॉल करने के बजाय, मैं इसे एक नामित सूची का उपयोग करके do.call के साथ आमंत्रित कर सकता हूं

 parms=list(x=c(1:10),a=2,b=1.5)
 do.call("power",parms)

हालांकि, कल्पना कीजिए कि मेरे पास a और b के समान मानों के साथ संसाधित होने के लिए अलग-अलग वैक्टर x हैं। जब तक मैंने कुछ याद नहीं किया है, ऐसा लगता है कि मैं एक आंशिक सूची parms=list(a=2,b=1.5) को परिभाषित नहीं कर सकता और फिर x के विभिन्न मूल्यों के साथ ऐसी सूची का पुन: उपयोग कर सकता हूं, कुछ ऐसा

 power(c(1:10),parms)

या

 do.call("power",c(1:10),parms) 
1
Massimo2013 4 अप्रैल 2020, 17:29
1
उसी तर्ज पर जैसा आप सोच रहे हैं - निम्नलिखित काम कर सकते हैं do.call("power",list(x=c(1:10), a=2,b=1.5))। क्या यह आपके उपयोग के मामले को संबोधित करता है?
 – 
sachin2014
4 अप्रैल 2020, 17:56
parms का पुन: उपयोग करने के लिए यह do.call("power",append(list(x=c(1:10)),parms)) जैसा कुछ होना चाहिए, लेकिन मैं जानना चाहता था कि क्या कोई बेहतर तरीका है
 – 
Massimo2013
4 अप्रैल 2020, 18:16

2 जवाब

कैसे पैरामीटर बनाने के बारे में जो फ़ंक्शन के डिफ़ॉल्ट तर्क के रूप में नहीं बदलते हैं।

power <- function(x,a = 2,b = 1.5) b*x^a

lapply(list(1:10, 11:20), power)

#[[1]]
# [1]   1.5   6.0  13.5  24.0  37.5  54.0  73.5  96.0 121.5 150.0

#[[2]]
# [1] 181.5 216.0 253.5 294.0 337.5 384.0 433.5 486.0 541.5 600.0
0
Ronak Shah 4 अप्रैल 2020, 17:42

हम pmap का उपयोग कर सकते हैं

library(purrr)
pmap(parms, power)
0
akrun 4 अप्रैल 2020, 18:29