循环遍历数据框中的列和行

时间:2018-02-26 10:36:20

标签: r loops

我已经搜索了很多关于这方面的答案,但到目前为止我真的很挣扎。我有5个数据帧,全部有6行10列。我想创建一个具有相同结构的新数据框,并为5个数据帧上的每个位置创建平均值。我试过这个:

    age_wealth1 <- data.frame(age_wealth1)
    age_wealth2 <- data.frame(age_wealth2)
    age_wealth3 <- data.frame(age_wealth3)
    age_wealth4 <- data.frame(age_wealth4)
    age_wealth5 <- data.frame(age_wealth5)

age_wealth_total <- matrix(nrow = nrow(age_wealth1), ncol = ncol(age_wealth1))

for(j in 1:nrow(age_wealth_total[j]))
  {
    for(k in 1:ncol(age_wealth_total[k]))
    {
      age_wealth_total[j,k] <- mean(age_wealth1[j,k], age_wealth2[j,k], age_wealth3[j,k], age_wealth4[j,k], age_wealth5[j,k])
    }
}

循环给出了有关列长度的错误,说是0,这不是真的,因为

ncol(age_wealth_total) # = 10

我真的希望有更多关于如何使用循环迭代矩阵或数据框中的列和行的提示。非常感谢!

1 个答案:

答案 0 :(得分:1)

要使您的代码正常工作,您可以像这样修改它:

age_wealth1 <- data.frame(age_wealth1)
age_wealth2 <- data.frame(age_wealth2)
age_wealth3 <- data.frame(age_wealth3)
age_wealth4 <- data.frame(age_wealth4)
age_wealth5 <- data.frame(age_wealth5)

age_wealth_total <- matrix(nrow = nrow(age_wealth1), ncol = 
ncol(age_wealth1))

for(j in 1:nrow(age_wealth_total))
{
  for(k in 1:ncol(age_wealth_total))
  {
    age_wealth_total[j,k] <- mean(c(age_wealth1[j,k], age_wealth2[j,k], age_wealth3[j,k], age_wealth4[j,k], age_wealth5[j,k]))
  }
}

但在你的情况下,你可能想要更轻松的事情:

age_wealth_total <- (age_wealth1 + age_wealth2 + age_wealth3 + age_wealth4 + age_wealth4 + age_wealth5) / 5