最佳答案
我有一个包含多个列的数据框架。对于数据框架中的每一行,我希望调用该行上的一个函数,该函数的输入使用该行的多个列。例如,假设我有这个数据和这个 testFunc,它接受两个参数:
> df <- data.frame(x=c(1,2), y=c(3,4), z=c(5,6))
> df
x y z
1 1 3 5
2 2 4 6
> testFunc <- function(a, b) a + b
假设我想将 testFunc 应用于列 x 和 z,那么对于第1行,我想要1 + 5,对于第2行,我想要2 + 6。有没有一种不用写 for 循环就可以实现的方法,比如使用 application 函数族?
我试过了:
> df[,c('x','z')]
x z
1 1 5
2 2 6
> lapply(df[,c('x','z')], testFunc)
Error in a + b : 'b' is missing
但是出错了,有什么想法吗?
我要调用的实际函数 编辑:不是一个简单的求和函数,而是 power.t.test。我用 a + b 只是为了举个例子。最终的目标是能够做这样的事情(用伪代码编写) :
df = data.frame(
delta=c(delta_values),
power=c(power_values),
sig.level=c(sig.level_values)
)
lapply(df, power.t.test(delta_from_each_row_of_df,
power_from_each_row_of_df,
sig.level_from_each_row_of_df
))
其结果是每行 df 的 power.t.test 的输出向量。