Answers:
只需将var2作为附加参数传递给apply函数之一即可。
mylist <- list(a=1,b=2,c=3)
myfxn <- function(var1,var2){
var1*var2
}
var2 <- 2
sapply(mylist,myfxn,var2=var2)
这会将传递var2
给的每个调用myfxn
。如果相反,您希望每次调用都myfxn
获得1st / 2nd / 3rd / etc。两者的元素mylist
和var2
,然后你在mapply
的领域。
myfxn
可以对其进行矢量化处理,在这种情况下,应使用myfxn(unlist(mylist), var2=var2)
sapply(mylist, function(var1, var2) { var1*var2 }, var=thisvar2)
但是我得到一个错误,参数2与多个形式参数匹配
var
而不是var2
。R不能理解你的意思。
如果您的函数有两个向量变量,并且必须对它们的每个值进行计算(如@Ari B. Friedman所述),则可以使用mapply
以下方法:
vars1<-c(1,2,3)
vars2<-c(10,20,30)
mult_one<-function(var1,var2)
{
var1*var2
}
mapply(mult_one,vars1,vars2)
这给你:
> mapply(mult_one,vars1,vars2)
[1] 10 40 90
mapply
如果vars1
只有一个元素,也会回收。例如,当vars1 <- 3
, mapply(mult_one, vars1, vars2)
回报30 60 90
。当您要在lapply
函数的第二个参数上使用时,这很有用。