我试图定义一个包含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.停止(“选择未定义的列”)”
答案 0 :(得分:0)
您有3期。
dfk
初始化k1 = c()
时,会得到一个空的逻辑向量。在循环的后面,当您尝试将向量与整数组合时,您将获得一个列表,该列表无法分配给data.frame
。而是将列设置为空的vector()
。dfk
分配值,否则替换将成为目标的不适当长度。因此,使用dfk[i,j]
选择一个值并将其替换为一个值。 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])
}