你可以按照这些思路做一些事情
第 1 步:生成玩具数据集
library(mvtnorm)
set.seed(1)
mat1 <- rmvnorm(n = 30, mean = sample(c(rep(0, 5), 1:5)), sigma = diag(10))
mat1[sample(seq(nrow(mat1) * ncol(mat1)), 5)] <- NA
mat1 <- t(mat1)
mat2 <- rmvnorm(n = 30, mean = sample(c(rep(0, 5), 1:5)), sigma = diag(10))
mat2[sample(seq(nrow(mat2) * ncol(mat2)), 5)] <- NA
mat2 <- t(mat2)
mat_list <- list(mat1, mat2)
第 2 步:创建一个辅助函数来进行测试,如果有任何缺失值,则生成 NA
t_test <- function(x)
c(stat = ifelse(any(is.na(x)), NA, t.test(x)$statistic),
p_val = ifelse(any(is.na(x)), NA, t.test(x)$p.value))
第 3 步:将其应用于矩阵行列
lapply(mat_list, function(m) t(apply(m, 1, t_test)))
## [[1]]
## stat p_val
## [1,] 1.02334 3.1461e-01
## [2,] -0.17025 8.6599e-01
## [3,] -0.55501 5.8314e-01
## [4,] NA NA
## [5,] 1.48641 1.4796e-01
## [6,] NA NA
## [7,] 25.64252 1.7737e-21
## [8,] NA NA
## [9,] 24.50047 6.2831e-21
## [10,] NA NA
## [[2]]
## stat p_val
## [1,] NA NA
## [2,] NA NA
## [3,] -0.44341 6.6076e-01
## [4,] NA NA
## [5,] 1.28913 2.0754e-01
## [6,] NA NA
## [7,] 4.86929 3.6477e-05
## [8,] 16.59708 2.4032e-16
## [9,] 0.54102 5.9263e-01
## [10,] NA NA