我有一个多列的数据框。对于数据框中的每一行,我想在该行上调用一个函数,并且该函数的输入正在使用该行中的多个列。例如,假设我有此数据和接受两个参数的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循环就能做到这一点的方法,也许可以应用apply函数族吗?
我尝试了这个:
> 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输出的向量。
dplyr
方式。