使用 lapply 运行多个 Kruskal Wallis 测试需要很长时间。更简单的解决方案?
我有一个名为 KWR 的数据框,包含 90 个观测值和 124306 个变量,全部为数值数据。我想在组之间的每一列中运行 Kruskal Wallis 分析。我在名为“Group”的变量后面添加了一个包含每个不同组的向量。为了测试准确性,我使用以下代码测试了一种肽(名为 x2461):
kruskal.test(X2461 ~ Group, data = KWR)
效果很好,并立即得到了结果。但是,我需要分析所有变量。我在阅读这篇文章时使用了 lapply: 如何对数据框中的多列循环 Bartlett 测试和 Kruskal 测试?
cols <- names(KWR)[1:124306]
allKWR <- lapply(cols, function(x) kruskal.test(reformulate("Group", x), data = KWR))
但是,在 R 不间断工作 2 小时后,我辞职了。有没有更有效的方法来做到这一点?
提前致谢。
注意:第一次发帖,R 初学者
I have a data frame 90 observations and 124306 variables named KWR all numeric data. I want to run a Kruskal Wallis analysis within every column between groups. I added a vector with every different group behind my variables named "Group". To test the accuracy, I tested one peptide (named x2461) with this code:
kruskal.test(X2461 ~ Group, data = KWR)
Which worked out fine and got me a result instantly. However, I need all the variables to be analyzed. I used lapply while reading this post: How to loop Bartlett test and Kruskal tests for multiple columns in a dataframe?
cols <- names(KWR)[1:124306]
allKWR <- lapply(cols, function(x) kruskal.test(reformulate("Group", x), data = KWR))
However, after 2 hours of R working non stop, I quit the job. Is there any more efficient way of doing this?
Thanks in advance.
NB: first time poster, beginner in R
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
查看
Rfast
包中的kruskaltests
。对于KWR
data.frame
来说,它看起来像:Take a look at
kruskaltests
in theRfast
package. For theKWR
data.frame
, it appears it would be something like:这太棒了 - 我在 0.01 系统时间内获得了 50 列和数百个案例。
This was great - I got 50 columns and several hundred cases in 0.01 system time.