【发布时间】:2018-07-10 08:14:14
【问题描述】:
我无法在 R 中创建一个函数,该函数允许我将一个单独的函数应用于数据帧的每一行,并将该函数的输出保存回数据帧。
一个简单的可重现示例(使用我想逐行应用的外部包/功能):
library(pwr)
n1 = c(22, 70)
n2 = c(25, 45)
df = data.frame(n1, n2)
我希望能够做到的是……:
df$pwr = pwr.t2n.test(n1= df$n1, n2 = df$n2, d = NULL, sig.level = .05, power = .80)[3]
我从数据框中为函数 n1 和 n2 参数输入 n1 和 n2 列。我收到了许多令人不快的错误/警告。
当我尝试使用 adply 逐行应用此函数时,会出现相同的错误/警告:
df= adply(df, 1, transform, pwr = pwr.t2n.test(n1= df$n1, n2 = df$n2, d = NULL, sig.level = .05, power = .80)[3])
但是,如果我一次将 pwr() 函数应用于一行,则为 n1 和 n2 参数指定数据框中的行和列位置,那么我就没有问题了:
pwr.t2n.test(n1= df[1,1], n2 = df[1,2], d = NULL, sig.level = .05, power = .80)[3]
= [1] 0.836982
pwr.t2n.test(n1= df[2,1], n2 = df[2,2], d = NULL, sig.level = .05, power = .80)[3]
= [1] 0.5398989
我想知道是否有某种方法可以使用 pwr() 函数本身,或者搭载 adply 或类似的东西,以便在更大的数据框中应用此函数并保存结果对于每一行(给定它们的 n1 和 n2 参数)。
【问题讨论】: