循环遍历R中的空数据帧并将值分配给列

时间:2020-03-26 05:12:58

标签: r dataframe

我试图定义一个包含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.停止(“选择未定义的列”)”

2 个答案:

答案 0 :(得分:0)

您有3期。

  1. 当您尝试使用dfk初始化k1 = c()时,会得到一个空的逻辑向量。在循环的后面,当您尝试将向量与整数组合时,您将获得一个列表,该列表无法分配给data.frame。而是将列设置为空的vector()
  2. 您需要使用二维子集为dfk分配值,否则替换将成为目标的不适当长度。因此,使用dfk[i,j]选择一个值并将其替换为一个值。
  3. 您在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]])
}

答案 1 :(得分:0)

我认为这就是您想要的。

dfk = data.frame(matrix(ncol = 5, nrow = 0))
colnames(dfk) <- c("k1","k2","k3","k4","k5")
for (j in 1:5){
  for (i in 1:12){
    dfk[i,j] = i+j
  }
  plot(1:12, dfk[,j])
}