首页 > 解决方案 > 循环遍历 R 中的空数据框并将值分配给列

问题描述

我正在尝试定义一个包含 5 列的空数据框,然后使用 for 循环为每一列分配值。我写了以下几行:

k = 1:5
dfk = data.frame(k1 = c(), k2 = c(), k3 = c(), k4 = c(), k5 = c())
for (j in 1:5){
    for (i in 1:12){
        dfk[j] = c(dfk[j], i+j)
    }
    plot(1:12, dfk[j])
}

我收到以下错误:

[.data.frame(dfk,j)中的错误:选择了未定义的列回溯:1.dfk [j] 2. [.data.frame(dfk,j)3.停止(“选择了未定义的列”)”

标签: rdataframe

解决方案


你有3个问题。

  1. 当您尝试使用 初始化dfkk1 = c(),您会得到一个空的逻辑向量。稍后在循环中,当您尝试将该向量与整数组合时,您会得到一个列表,该列表不能分配给data.frame. 而是将列设置为空vector()s。
  2. 您需要dfk使用二维子集分配值,否则替换将成为目标的不合适长度。因此使用dfk[i,j]选择一个值并用一个值替换它。
  3. 您调用 plot on dfk[j],但计算结果为 12 行 x 1 列 data.frame。你可以使用dfk[[j]].
k = 1:5
dfk = data.frame(k1 = vector(), k2 = vector(), k3 = vector(), k4 = vector(), k5 = vector())
for (j in 1:5){
    for (i in 1:12){
      dfk[i,j] = i+j
    }
  plot(1:12,dfk[[j]])
}

推荐阅读