我是R的新手,并且想知道是否有人可以解释为什么在命名列之后将一行添加到空data.frame时,会重命名列名称 . 如果data.frame在命名列之前添加了行,或者在定义data.frame时包含空行,则不会发生这种情况 .
在添加行之前定义的列名称(观察新的列名称,'X.a. X.b . '):
df1 <- data.frame(character(), character(), stringsAsFactors = FALSE)
colnames(df1) <- c("one", "two")
df1 <- rbind(df1, c("a", "b"))
df1
# X.a. X.b.
#1 a b
在列定义之前添加的行:
df2 <- data.frame(character(), character(), stringsAsFactors = FALSE)
df2 <- rbind(df2, c("a", "b"))
colnames(df2) <- c("one", "two")
df2
# one two
#1 a b
在使用一个空行定义的数据框中添加行之前定义的列名:
df3 <- data.frame(character(1), character(1), stringsAsFactors = FALSE)
colnames(df3) <- c("one", "two")
df3 <- rbind(df3, c("a", "b"))
df3
# one two
#1
#2 a b
1 回答
Normaly,data.frames只有在具有相同的colnames时才能连接 .
否则,您将收到错误消息 .
但是,如果其中一个data.frames为空,则非空data.frame将控制新data.frame的功能 .
在你的情况下,c(“a”,“b”)被强制转换为data.frame,然后将其与其他data.frame连接起来 . 然后它为强制data.frame创建一个自动的colnames,它将控制新data.frame的功能,因为它不是空的 .