r - 如何通过R下的for循环将Wilcoxon测试应用于矩阵的每一行
问题描述
我是 R 新手,我有一个简单的问题,如何将 Wilcoxon 检验应用于 R 下矩阵的每一行?例如,作为最简单的矩阵。我正在尝试通过 for 循环将 Wilcoxon 测试应用于每一行,两组列,第 1 到第 5 列作为一组,第 6 到 10 列作为另一组。并将 P 值作为列保存到文件中。我写了两个 for 循环但失败了。我把我的 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
希望有帮助。
推荐阅读
- python - 如果不是...后跟函数
- r - 如何根据匹配的前缀/后缀合并两个字符串?
- java - onConfigurationChanged 不适用于 API17
- android - Room android LiveData 仅观察调用 2 次
- javascript - 找出对象中的值翻倍需要多少天
- javascript - 从 JSX 内部的渲染访问数组
- python - Python pyserial 一写延迟
- javascript - 无法初始化 git 存储库。`git` 不在 PATH 中。NPM 项目设置问题
- react-native - 在 react-native 嵌套导航器中为不同屏幕添加不同的标题按钮
- firebase-realtime-database - ionic firebase 从表中获取特定项目