繁体   English   中英

空data.frame的数据帧列名

[英]dataframe column names for empty data.frame

我是R的新手,并且想知道是否有人可以解释为什么在命名列之后将一行添加到空data.frame时,重命名列名称。 如果data.frame在命名列之前添加了行,或者在定义data.frame时包含空行,则不会发生这种情况。

在添加行之前定义的列名称(观察新的列名称,'XaXb'):

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

Normaly,data.frames只有在具有相同的colnames时才能连接。

data1 <- data.frame(x = 1, y = 1)
data2 <- data.frame(x = 2, y = 2)
rbind(data1, data2)

否则,您将收到错误消息。

data1 <- data.frame(xa = 1, ya = 1)
data2 <- data.frame(x = 2, y = 2)
rbind(data1, data2)
# Error in match.names(clabs, names(xi)) : names do not match previous names

但是,如果其中一个data.frames为空,则非空data.frame将控制新data.frame的功能。

data1 <- data.frame(x = numeric(), y = numeric())
data2 <- data.frame(xa = 2, ya = 2)
rbind(data1, data2)

data1 <- data.frame(xa = 2, ya = 2)
data2 <- data.frame(x = numeric(), y = numeric())
rbind(data1, data2)

在你的情况下,c(“a”,“b”)被强制转换为data.frame,然后将其与其他data.frame连接起来。 然后它为强制data.frame创建一个自动的colnames,它将控制新data.frame的功能,因为它不是空的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM