Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 数据帧内一列的所有组组合的T检验_R_Dplyr_Purrr - Fatal编程技术网

R 数据帧内一列的所有组组合的T检验

R 数据帧内一列的所有组组合的T检验,r,dplyr,purrr,R,Dplyr,Purrr,我想运行t检验并提取分组因子的所有组合的p值。dataframe只有2列。虚拟数据示例: set.seed(123) df <- data.frame( Group = c(rep("A", 5), rep("B", 4), rep("C", 6)), Val = c(sample(101:200, 5, replace = T), sample(1:100, 4, replace = T), sample(1:100, 6, replace = T)) ) 为了方便起见,这里有

我想运行t检验并提取分组因子的所有组合的p值。dataframe只有2列。虚拟数据示例:

set.seed(123)
df <- data.frame(
  Group = c(rep("A", 5), rep("B", 4), rep("C", 6)),
  Val = c(sample(101:200, 5, replace = T), sample(1:100, 4, replace = T), sample(1:100, 6, replace = T))
)
为了方便起见,这里有一个用于
t.test
的包装函数,用于提取pvalue

tWrap <- function(x, y) t.test(x, y)$p.value
tWrap数据:

set.seed(123)
df数据:

set.seed(123)
dfR基溶液

我修改了tWrap

tWrap <- function(x) t.test(x$Var1, x$Var2)$p.value

L <- split(df$Val, df$Group)
pvals <- apply(expand.grid(L, L), 1, tWrap)
pvals_mat <- matrix(pvals, ncol=3)

             # [,1]        [,2]         [,3]
# [1,] 1.0000000000 0.001918324 0.0001655259
# [2,] 0.0019183244 1.000000000 0.8850039246
# [3,] 0.0001655259 0.885003925 1.0000000000
tWrapbaser解决方案

我修改了tWrap

tWrap <- function(x) t.test(x$Var1, x$Var2)$p.value

L <- split(df$Val, df$Group)
pvals <- apply(expand.grid(L, L), 1, tWrap)
pvals_mat <- matrix(pvals, ncol=3)

             # [,1]        [,2]         [,3]
# [1,] 1.0000000000 0.001918324 0.0001655259
# [2,] 0.0019183244 1.000000000 0.8850039246
# [3,] 0.0001655259 0.885003925 1.0000000000
tWrap
library(purrr)
# get group combinations
params_list <- combn(levels(df$Group), 2, FUN = list)
# perform t test for each combination
model_t <- map(.x = params_list, 
                .f = ~ t.test(formula = Val ~ Group, 
                                   data    = subset(df, Group %in% .x)))
# extract p values
t_pvals <- map_dbl(.x = model_t, .f  = "p.value")
names(t_pvals) <- map_chr(.x = params_list, .f = ~ paste0(.x, collapse = ""))
t_pvals
#           AB           AC           BC 
# 0.0019183244 0.0001655259 0.8850039246
tWrap <- function(x) t.test(x$Var1, x$Var2)$p.value

L <- split(df$Val, df$Group)
pvals <- apply(expand.grid(L, L), 1, tWrap)
pvals_mat <- matrix(pvals, ncol=3)

             # [,1]        [,2]         [,3]
# [1,] 1.0000000000 0.001918324 0.0001655259
# [2,] 0.0019183244 1.000000000 0.8850039246
# [3,] 0.0001655259 0.885003925 1.0000000000