【发布时间】:2014-10-24 12:56:38
【问题描述】:
我写了一个这样的函数:
myfunc <- function(data, c1, c2, c3) {
res <- data*c1*c2*c3
return(res)
}
将myfunc 应用于向量data 我可以使用
lapply(data, myfunc, c1=2, c2=3, c3=4)
但我必须循环遍历一个 id 以及向量 data,以便结果向量(或矩阵)的每一行都包含一个 id 和相应的结果。
所以对于简单的情况,这将是:
myfunc <- function(id, data, c1, c2, c3) {
res <- data*c1*c2*c3
return(c(id, res))
}
但我不能在上面使用lapply。
我已经尝试将所有输入(id, data, c1, c2, c3)放入矩阵中以使用apply:
apply(matrix, 1, myfunc)
但它不起作用。
那么实现这一目标的最佳方法是什么?
提前致谢!
编辑:
这可能是数据矩阵:
id data c1 c2 c3
[1,] 32 1.12 2 2.5 2.8
[2,] 33 1.14 2 2.5 2.8
[3,] 34 1.21 2 2.5 2.8
[4,] 35 1.22 2 2.5 2.8
[5,] 36 1.27 2 2.5 2.8
[6,] 37 1.30 2 2.5 2.8
[7,] 38 1.32 2 2.5 2.8
[8,] 39 1.36 2 2.5 2.8
[9,] 40 1.44 2 2.5 2.8
[10,] 41 1.45 2 2.5 2.8
列 id 应循环通过,myfunc 应应用于其他列。 我期望(或要求)这样的结果:
id res
[1,] 32 15.68
[2,] 33 15.96
[3,] 34 16.94
[4,] 35 17.08
[5,] 36 17.78
[6,] 37 18.20
[7,] 38 18.48
[8,] 39 19.04
[9,] 40 20.16
[10,] 41 20.30
【问题讨论】:
-
我们可以提供一个可重现的示例(具有预期结果)吗?