循环列表以在 R 中分配名称不起作用

Loop over list to assign names in R not working

我有一堆行要添加到名为 bigger_false 的更大数据框中。我想使用 for 循环来做到这一点。 每行如下所示:

new_row1 <- c(402, 1, "false alarm", 0)

我想为较大数据框的每个新行分配列名,因此我遍历列表中的每一行并为每一行分配相同的名称。

rowlist = list(new_row1, new_row2, new_row3, new_row4, new_row5, new_row6, new_row1011, new_row1014, new_row1016, new_row1022, new_row1023, new_row2021, new_row3046)

for (item in rowlist) {
      names(item) <- c("guest_id", "sessionNum", "interactions.hitType", "n")
    }

然后我遍历每一个并将它们添加到已经具有这些列名称的大数据框中。

for (item in rowlist) {
      bigger_false <- rbind(bigger_false, item)
    }

现在,第一个循环似乎适用于第一行(它成功地分配了名称)。所以如果我手动做

bigger_false <- rbind(bigger_false, new_row1)

我没有收到任何错误。但是,第一个循环的其余部分没有成功地为其余行分配名称,因此 rbind 循环在第一次迭代后给出错误:“Argument 2 must have names”。

为什么会这样?提前致谢。

item 变量遍历行列表但不修改行列表的内容。
尝试:

new_row1 <- c(402, 1, "false alarm", 0)
new_row2 <- c(403, 2, "false alarm", 0)

rowlist = list(new_row1, new_row2)

for (item in 1:length(rowlist)) {
  names(rowlist[[item]]) <- c("guest_id", "sessionNum", "interactions.hitType", "n")
}

bigger_false <- NULL
for (item in rowlist) {
  bigger_false <- rbind( item, bigger_false)
}
bigger_false

     guest_id sessionNum interactions.hitType n  
item "403"    "2"        "false alarm"        "0"
item "402"    "1"        "false alarm"        "0"

除了循环,你还可以这样做:

# creates a matrix
df <- do.call(rbind, rowlist)

# create a dataframe
df <- data.frame(df)
colnames(df) <- c("guest_id", "sessionNum", "interactions.hitType", "n")