gpt4 book ai didi

R:带有 ddply 的 for 循环

转载 作者:行者123 更新时间:2023-12-04 12:01:25 25 4
gpt4 key购买 nike

我是 R 和 stackoverflow 的新手,所以如果问题或其格式不理想,我很抱歉......

我正在尝试使用 ddply 从矩阵中获取一些基本统计数据,并且我想通过使用 for 循环来加快处理速度。不幸的是,这并不像我想象的那么容易......

Strain  gene1         gene2      gene3  .   .   .
A 2.6336700 1.42802 0.935742
A 2.0634700 2.31232 1.096320
A 2.5798600 2.75138 0.714647
B 2.6031200 1.31374 1.214920
B 2.8319400 1.30260 1.191770
B 1.9796000 1.74199 1.056490
C 2.4030300 1.20324 1.069800
.
.
.
----------

for (n in c("gene1","gene2","gene3","gene4")) {
summary <- ddply(Data, .(Strain), summarise,
mean = mean(n),
sd = sd(n),
se = sd(n) / sqrt(length(n)) )
}

结果显示 mean = 6 并且 sd 和 se 都是“NA”……显然不是我的想法。

如果我摆脱 for 循环并手动插入列名(“gene1”):
summary <- ddply(Data, .(Strain), summarise,
mean = mean(gene1),
sd = sd(gene1),
se = sd(gene1) / sqrt(length(gene1)) )

现在它似乎给了我正确的结果。有人可以在这件事上启发我并告诉我我做错了什么吗?

最佳答案

只需使用 colwise (mean) , colwise(sd) , 和 colwise(length) .不需要 for loop

library(plyr)

ddply(mtcars,.(cyl), colwise(mean))



cyl mpg disp hp drat wt qsec vs am gear carb
1 4 26.66364 105.1364 82.63636 4.070909 2.285727 19.13727 0.9090909 0.7272727 4.090909 1.545455
2 6 19.74286 183.3143 122.28571 3.585714 3.117143 17.97714 0.5714286 0.4285714 3.857143 3.428571
3 8 15.10000 353.1000 209.21429 3.229286 3.999214 16.77214 0.0000000 0.1428571 3.285714 3.500000

以你为例,
ddply(df,.(Strain),colwise(mean))

关于R:带有 ddply 的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18719041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com