如何将威尔科克森测试应用于矩阵的每一行 by R 下的 for 循环



我是 R 的新手,我有一个快速的问题,如何将 Wilcoxon 测试应用于 R 下矩阵的每一行? 例如,作为最简单的矩阵。我正在尝试将 Wilcoxon 测试应用于每行 for 循环、两组列、第 1 到 5 列作为一个组,6 到 10 作为另一组。并将 P 值作为列保存到文件中。我写了两个 for 循环,但失败了。我把我的循环和错误消息放在最后。非常感谢。

mymatrix
[,1][,2] [,3]  [,4] [,5] [,6] [,7] [,8] [,9]  [,10]
[1,]    1   11   21   31   41   51   61   71   81    91
[2,]    2   12   22   32   42   52   62   72   82    92
[3,]    3   13   23   33   43   53   63   73   83    93
[4,]    4   14   24   34   44   54   64   74   84    94
[5,]    5   15   25   35   45   55   65   75   85    95
[6,]    6   16   26   36   46   56   66   76   86    96
[7,]    7   17   27   37   47   57   67   77   87    97
[8,]    8   18   28   38   48   58   68   78   88    98
[9,]    9   19   29   39   49   59   69   79   89    99
[10,]   10   20   30   40   50   60   70   80   90   100

for (i in nrow(mymatrix)){
vector1 <- c(mymatrix[i,1:5]) 
vector2 <- c(mymatrix[i,6:10])
wilcox.test(vector1,vector2, paired = TRUE, alternative = "two.sided")
}
#Warning message:
In wilcox.test.default(vector1, vector2, paired = TRUE, alternative = "two.sided") :
cannot compute exact p-value with ties
# I also tried this, it doesn't work either.
for (i in nrow(mymatrix)){
wilcox.test(as.numeric(mymatrix[i,1:5],as.numeric(mymatrix[i,6:10]), paired = TRUE)
}

你在寻找这样的东西:

# initialize a list to store the p_values
p_values <- vector("list", nrow(mymatrix))
for(i in seq_along(1: nrow(mymatrix))){
p_values[i] = wilcox.test(mymatrix[i,1:5],mymatrix[i,6:10], paired = TRUE, alternative = "two.sided", exact = FALSE)$p.value
}
# make it a data.frame
p_values = data.frame(p_values = sapply(p_values, c))
#Output
p_values
#     p_values
# 1  0.03688843
# 2  0.03688843
# 3  0.03688843
# 4  0.03688843
# 5  0.03688843
# 6  0.03688843
# 7  0.03688843
# 8  0.03688843
# 9  0.03688843
# 10 0.03688843

希望有帮助。

最新更新