我正试图在R中使用apply方法。但我一直收到错误:FUN中的错误(newX[,I],…(:"中缺少参数;b";。
产生错误的代码:
my_data <- data.frame(x1 = 1:5, x2 = 2:6, x3 = 3)
myFunction <- function(a, b, c){
return(a + b + c)
}
results = apply(my_data, 1, myFunction) #this line is producing the error massage
如果我改变";myFunction";至";sum";例如那么就没有错误了。我怎样才能消除这个错误?
函数应更改为
myFunction <- function(x) sum(x)
apply(my_data, 1, myFunction)
#[1] 6 8 10 12 14
此外,使用rowSums
,按行求和操作更有效
rowSums(my_data)
或者通过在OP的原始函数中使用lambda/匿名函数单独指定参数
apply(my_data, 1, function(x) myFunction(x[1], x[2], x[3]))
您可以使用mapply
:
with(my_data, mapply(myFunction, x1, x2, x3))
还要注意您的数据帧是一个包含3个矢量的列表。可以像标量一样添加向量。
with(my_data, x1 + x2 + x3)