在R中的data.frame中插入一行

时间:2018-07-31 19:16:33

标签: r dataframe rbind

我已经提到了这个问题Insert a row in a data.table,但是,我遇到了这个错误:

Warning message:
In `[<-.factor`(`*tmp*`, ri, value = "All") :
  invalid factor level, NA generated

当我尝试插入仅包含值"All"的新行时,如下所示:

d <- copy(as.data.frame(Orange))
d <- rbind(d, c("All", "All", "All"))

它发出警告,并将"All"插入最后两列,并将NA插入第一列。

我在这里做错什么,我知道这应该很简单。

3 个答案:

答案 0 :(得分:0)

尝试将c("all", "all", "all")更改为list("all", "all", "all")。向量(由c()创建)在数据帧中创建列。您可以列出列表,也可以制作要尝试的内容rbind data.frame(因为data.frames只是特殊列表)。

答案 1 :(得分:0)

根据thisrbind参数必须是数据帧或可以强制转换为数据帧的对象。它无法将c("All","All","All")强制转换为数据帧。我将改为创建一个新的数据框:d <- rbind(d, data.frame(...))。您可能还会发生一些数据类型不匹配的情况。

答案 2 :(得分:0)

这是我可以使它正常运行的唯一方法。我认为有更好的方法可以做到这一点。

d <- copy(as.data.frame(Orange))
add <- data.frame("All", "All", "All")
names(add) <- names(d)
d <- rbind(d, add)