我试图通过使用lapply而不是for循环在lapply函数中提供函数变量来加速我的代码我在lapply函数中提供了所有函数变量。但它给了我这个错误,这里有什么问题?
Error in functionE(A[[i]],A,weight) :
argument "weight" is missing, with no default
代码结构:
weight<-weight
A<-functionB() #A is a list
C<-lapply(1:length(A),function(i,A,weight){
if(functionE(A[[i]],A,weight)==TRUE)
#some other functions
return(A)
})
编辑:实际上A
是图表列表(为简单起见,我的布局就是这样)
for (i in 1:vcount(A[[1]])
{
#some function and if condition that needs((weight and, A))
#there is a function which return j
V(A[[1]])[i]$attribute2<-V(A[[1]])[j]$attribute1
}
所以我想访问for。中的A
更改。
答案 0 :(得分:1)
首先,全局环境中的R变量对于函数是可见的,因此您不必按照您的方式传递它们。
我并不完全清楚你想做什么,但apply
函数族使用你的输入作为第一个变量而其他变量需要是常量(除非你使用mapply
)。您需要将这些其他变量作为变量传递给(s/l)apply
。
lappy(1:length(A), function(i,A,weight){
#whatever your function does
},A,weight)
在这种情况下,i
将从1到长度(A)交替,而所有其他变量将保持不变。请注意,您根本不需要添加A
和weight
,因为您可以在函数内部使用它们而无需手动传递它们。