使用R

时间:2019-04-20 14:48:19

标签: r function statistics tidyverse t-test

由于要进行大量事后的t检验,因此我想为t检验的整洁输出表编写函数,但是,编写函数并不是我的强项,因此我需要一些帮助。我当前的代码如下:


library(tidyverse)
library(lsr)
library(broom)

t_table <- function(data$col, data$col) {

  t.test(data$col, data$col) %>%
    broom::tidy() %>%
    mutate(Cohens_d = cohensD(data$col, data$col)) %>% # calc. cohen's d
    mutate_at(vars(- c(p.value,method,alternative)), round, 2)
}

错误之一是:

  

data $ col中的错误:“ closure”类型的对象不可子集化。

我假设data和col不是任何数据框和列的通用名称。

基本上,我希望能够为每个变量指定任何数据框和列。我什至不确定这是否可行,因为这是我正在尝试创建的非常通用的功能,但是任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

函数的输入参数应a)名称不相同,b)不包含$。除此之外,您的功能还可以正常运行:

t_table <- function(col1, col2) {

  t.test(col1, col2) %>%
    broom::tidy() %>%
    mutate(Cohens_d = cohensD(col1, col2)) %>% # calc. cohen's d
    mutate_at(vars(- c(p.value,method,alternative)), round, 2)
}

set.seed(1)
t_table(rnorm(100), rnorm(100)+1/2)
  estimate estimate1 estimate2 statistic     p.value parameter conf.low conf.high                  method alternative Cohens_d
1    -0.35      0.11      0.46     -2.69 0.007745151    197.19    -0.61     -0.09 Welch Two Sample t-test   two.sided     0.38