gpt4 book ai didi

R:向空数据框添加行时丢失列名称

转载 作者:行者123 更新时间:2023-12-03 05:35:58 25 4
gpt4 key购买 nike

我刚刚开始使用 R 并遇到了一个奇怪的行为:在空数据框中插入第一行时,原始列名称丢失。

示例:

a<-data.frame(one = numeric(0), two = numeric(0))
a
#[1] one two
#<0 rows> (or 0-length row.names)
names(a)
#[1] "one" "two"
a<-rbind(a, c(5,6))
a
# X5 X6
#1 5 6
names(a)
#[1] "X5" "X6"

如您所见,列名称 onetwo 已替换为 X5X6

有人可以告诉我为什么会发生这种情况吗?有没有正确的方法可以在不丢失列名的情况下做到这一点?

霰弹枪解决方案是将名称保存在辅助向量中,然后在完成数据框处理后将它们添加回来。

谢谢

上下文:

我创建了一个函数,它收集一些数据并将它们作为新行添加到作为参数接收的数据帧中。我创建数据框,迭代数据源,将 data.frame 传递给每个函数调用以填充其结果。

最佳答案

rbind 帮助页面指定:

For ‘cbind’ (‘rbind’), vectors of zero length (including ‘NULL’) are ignored unless the result would have zero rows (columns), for S compatibility. (Zero-extent matrices do not occur in S3 and are not ignored in R.)

因此,事实上,a 在您的 rbind 指令中被忽略。看起来并没有完全被忽略,因为它是一个数据帧,所以 rbind 函数被称为 rbind.data.frame :

rbind.data.frame(c(5,6))
# X5 X6
#1 5 6

也许插入行的一种方法是:

a[nrow(a)+1,] <- c(5,6)
a
# one two
#1 5 6

但根据您的代码,可能有更好的方法。

关于R:向空数据框添加行时丢失列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5231540/

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