【发布时间】:2015-04-12 13:47:35
【问题描述】:
在 R 中,一旦数据框已经初始化,如何向数据框添加新行?
到目前为止,我有这个:
df <- data.frame("hi", "bye")
names(df) <- c("hello", "goodbye")
#I am trying to add "hola" and "ciao" as a new row
de <- data.frame("hola", "ciao")
merge(df, de) # Adds to the same row as new columns
# Unfortunately, I couldn't find an rbind() solution that wouldn't give me an error
任何帮助将不胜感激
【问题讨论】:
-
也将名称分配给
de。names(de) <- c("hello","goodbye")和rbind -
或一行
rbind(df, setNames(de, names(df))) -
这确实是基础 R 惨败的一个领域,并且已经存在了很长时间:stackoverflow.com/questions/13599197/…
-
@thelatemail 不同意。数据帧是 r 中的一种特殊结构。具有常见的暗名和属性和方法的列表列表。我认为人们不能
rbind(data.frame(a = 1), data.frame(b = 2)).. 你为什么要这样做?我希望无论如何都会引发错误。这就像merge'ing 带有一个随机的by变量。而现在是2015年,大家不都设置options(stringsAsFactors = FALSE)吗? -
@rawr - 当然,不应该绑定不同的名称,但是 R 无法处理将无名称绑定到无名称、将名称绑定到具有相同维度的无名称或绑定新数据以合并新的因子水平。我认为这是一个弱点。特别是当它可以处理绑定重复名称和所有 NA 名称时。设置
stringsAsFactors=FALSE可以快速解决问题,但更改其他人设置不同的默认值真的会毁了一天。