For 循环创建多个空数据帧给出错误

时间:2021-05-31 08:58:11

标签: r dataframe for-loop

我写了一个 for 循环来创建空的多个数据帧,使用名称向量,但即使一开始看起来很简单,我还是收到了一条错误消息:ID_names[i] 中的错误 <- data.frame () : 替换长度为零

更具体地说,我将为您提供一个可重现的示例:

ID_names <- c("Athens","Rome","Barcelona","London","Paris","Madrid")

for(i in 1:length(ID_names){
ID_names[i] <- data.frame()
}

你知道为什么这是错误的吗?我想请教您不仅提供解决方案,还要说明为什么这个 for 循环是错误的,以避免以后出现此类错误。

1 个答案:

答案 0 :(得分:1)

您试图将数据帧存储在向量 (ID_names[i]) 的一个元素中,这是不可能的。您可能想要创建一个空数据框列表并为其分配名称,这可以使用 replicate 完成。

ID_names <- c("Athens","Rome","Barcelona","London","Paris","Madrid")
list_data <- setNames(replicate(length(ID_names), data.frame()), ID_names)

然而,这种空数据帧的初始化很少有用。它最终会造成更多的混乱。根据您的实际用例,可能还有其他更好的方法来处理此问题。