我有2个变量,a
和b
。 a
可能非常大。 b
始终是一个函数向量,可应用于数据框a
中的每一列。
a <- data.frame(col1=c(1, 2, 3), col2=c(4, 5, 6))
b <- c(as.double, function(x) {1+x})
所以我想要的结果是函数b[1]
应用于col1,b[2]
应用于col2,依此类推所有列。我觉得应该在这里使用lapply,但文档似乎说它只能有一个功能。我可以使用一个循环,但是“矢量化”方式会很好。
答案 0 :(得分:3)
这是一种方法:
results <- mapply(function(i,j) b[[i]](a[[j]]), i=1:length(b), j=1:length(a))
它给你:
> results
[,1] [,2]
[1,] 1 5
[2,] 2 6
[3,] 3 7