如何使用 for 循环在没有 5 组的那么多行的情况下循环这个?
How to use for loop to loop this without so many line for 5 groups?
基本上第1组是第1、6、11个数据的平均值。第 2 组是第 2、7、12 组数据的平均值,第 3、4 和 5 组也是如此。
我认为其中有一些序列可以使用 for 循环来获取结果,而不是使用这种混乱的方法。我应该如何使用 for 循环来完成?
下面的编码是我试过的
x <- c(3,41,435,534,222,234,1,2,5,2,5,77,433,22,44)
Group1 <- (x[1] + x[6] + x[11])/3
Group2 <- (x[2] + x[7] + x[12])/3
Group3 <- (x[3] + x[8] + x[13])/3
Group4 <- (x[4] + x[9] + x[14])/3
Group5 <- (x[5] + x[10] + x[15])/3
我希望得到这个任务的简化代码!谢谢!
一个简单的方法是将它们放在一个矩阵中,然后使用 rowMeans
rowMeans(matrix(x, ncol=3)) #From @jogo
#[1] 80.66667 39.66667 290.00000 187.00000 89.33333
这给出了与您的 Group1
、Group2
...Group5
.
相同的 5 个数字
或其他一些变体:
colMeans(matrix(x, nrow = 3, byrow = TRUE))
rowMeans(matrix(x, nrow = length(x)/3))
colMeans(matrix(x, ncol = length(x)/3, byrow = TRUE))
基本上第1组是第1、6、11个数据的平均值。第 2 组是第 2、7、12 组数据的平均值,第 3、4 和 5 组也是如此。 我认为其中有一些序列可以使用 for 循环来获取结果,而不是使用这种混乱的方法。我应该如何使用 for 循环来完成?
下面的编码是我试过的
x <- c(3,41,435,534,222,234,1,2,5,2,5,77,433,22,44)
Group1 <- (x[1] + x[6] + x[11])/3
Group2 <- (x[2] + x[7] + x[12])/3
Group3 <- (x[3] + x[8] + x[13])/3
Group4 <- (x[4] + x[9] + x[14])/3
Group5 <- (x[5] + x[10] + x[15])/3
我希望得到这个任务的简化代码!谢谢!
一个简单的方法是将它们放在一个矩阵中,然后使用 rowMeans
rowMeans(matrix(x, ncol=3)) #From @jogo
#[1] 80.66667 39.66667 290.00000 187.00000 89.33333
这给出了与您的 Group1
、Group2
...Group5
.
或其他一些变体:
colMeans(matrix(x, nrow = 3, byrow = TRUE))
rowMeans(matrix(x, nrow = length(x)/3))
colMeans(matrix(x, ncol = length(x)/3, byrow = TRUE))