这个其实没什么复杂,主要是你从t.test里面提取相应的数据合成一个数据框就好了,另外,我同意楼上的看法,你那个one sample t test看起来是实际上才是paired t test的结果。
- library(dplyr)
- library(purrr)
- t_test_df <- function(dat){
-
- t_test <- apply(dat, 2, t.test)
-
- t_pair <- data.frame(obs = map_dbl(t_test, 2) + 1, # df + 1 is num of obs
- avg = map_dbl(t_test, 5),
- std_err = map_dbl(t_test, 7),
- std_dev = apply(dat, 2, sd),
- ci_low = map(t_test, 4) %>% map_dbl(., 1),
- ci_up = map(t_test, 4) %>% map_dbl(., 2)
- )
-
- t_pair_info <- data.frame(t = as.numeric(t_test$d[1]),
- df = as.numeric(t_test$d[2]),
- less = as.numeric(t_test$d[3])/2,
- two_sided = as.numeric(t_test$d[3]),
- greater = 1 - as.numeric(t_test$d[3])/2)
-
- # should be result on t_test$x1, t_test$x2
- t_one <- t_pair[3,]
- t_one_info <- t_pair_info
-
- }
复制代码