将数据帧的两列传递给pwr.t.test

时间:2014-03-03 17:10:04

标签: r apply lapply dplyr

我正在尝试将以下内容传递给pwr.t.test

> twelve
       fail sampsize     sd
1  0.047619       21 0.9759
2  0.000000       28 0.0000
3  0.000000        1 0.0000
4  0.000000       13 0.0000
5  0.000000        1 0.0000
6  0.000000        1 0.0000
7  0.000000        1 0.0000
8  0.000000        1 0.0000
9  0.000000        5 0.0000
10 0.000000        7 0.0000
11 0.100000       20 1.3416
12 0.000000        1 0.0000
13 0.000000        2 0.0000
14 0.000000        9 0.0000
15 0.000000       10 0.0000
16 1.000000        3 0.0000
17 0.133333       30 1.8619
18 0.000000        1 0.0000
19 0.000000        6 0.0000
20 0.000000       11 0.0000

我想将fail/sample作为pwr.t.test的参数。

以下是我如何实现它无济于事:

powertest<-function(x,y) 

{pwr.t.test(d=x/y,power=.8,sig.level=.05,type="one.sample",alternative="two.sided")}
twelvelist<-list(twelve$fail,twelve$sd)
mapply(powertest, twelvelist)
Error in x/y : 'y' is missing

我之前有lapply的运气,但那只是使用了一个向量(而不是数据帧的两列)。

我知道ddplyapply家庭成员之一很容易做到这一点。

谢谢。

1 个答案:

答案 0 :(得分:3)

Brocolli,试试:

with(twelve, mapply(powertest, fail, samplesize))

但是,鉴于你并不真的需要两个变量,但实际上只需要两个变量的比例,你可以轻松地做到:

with(twelve, sapply(fail / samplesize, pwr.t.test, power=.8, sig.level=.05, ...))  # replace ... with actual arguments

我没有测试过这个b / c我不知道你使用的功能来自哪里,所以你可能需要调整一下。