由于要进行大量事后的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不是任何数据框和列的通用名称。
基本上,我希望能够为每个变量指定任何数据框和列。我什至不确定这是否可行,因为这是我正在尝试创建的非常通用的功能,但是任何帮助将不胜感激。
答案 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