gpt4 book ai didi

r - 空数据框的数据框列名

转载 作者:行者123 更新时间:2023-12-04 23:53:24 26 4
gpt4 key购买 nike

我是 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

最佳答案

通常,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 的特性,因为它不为空。

关于r - 空数据框的数据框列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38025247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com