我有一個函數f
,它接受兩個參數,a
和b
。我有一個x
的值列表,我想插入a
,而b
已修復。在Ruby中,我會使用map
,如:在R中,如何將列表插入到接受兩個參數的函數中?
x.map {|el| f(el,3) }
怎麼寫這個R中?
我有一個函數f
,它接受兩個參數,a
和b
。我有一個x
的值列表,我想插入a
,而b
已修復。在Ruby中,我會使用map
,如:在R中,如何將列表插入到接受兩個參數的函數中?
x.map {|el| f(el,3) }
怎麼寫這個R中?
編輯:固定參數順序
像lapply(x,f,b=3)
(或sapply()
)
在這種情況下sapply
工作正常(如@BenBolker回答),但mapply
東西也是一個很好的選擇,而實際上「最好」 的解決方案時,既a
和b
變化:
f <- function(a,b) a+b
x <- as.list(11:13) # you said you had a list...
# One argument (b) is fixed
sapply(x, f, 3) # 14 15 16
mapply(f, x, 3) # 14 15 16
# Both arguments vary
y <- 101:103
mapply(f, x, y) # 112 114 116
Dependi納克你的函數,你有時可以直接與載體使用它, 作爲第一個參數
f <- function(a,b) a+b
f(1:10,2)
,或者如果它不工作(如果該函數假定 第一個參數是一個單一的數字,而不是到矢量), 您可以將其矢量化爲 (Vectorize
只是隱藏對lapply
的呼叫)。
f <- Vectorize(f)
f(1:10,2)
好吧,'lapply(x,f,b = 3)'更有可能工作;-) – Tommy 2012-03-08 00:12:57