gpt4 book ai didi

r - R:控制对rbind()的调用中自动创建的列名

转载 作者:行者123 更新时间:2023-12-04 06:26:57 25 4
gpt4 key购买 nike

如果我做这样的事情:

> df <- data.frame()
> rbind(df, c("A","B","C"))
X.A. X.B. X.C.
1 A B C


您可以看到该行已添加到空数据框中。但是,这些列会根据数据的内容自动命名。

如果以后我要这样做,则会导致问题:

> df <- rbind(df, c("P", "D", "Q"))


有没有办法控制由rbind自动创建的列的名称?还是采取其他方式来做我在这里要做的事情?

最佳答案

@ baha-kev对于字符串和因子有很好的答案。

我只想指出rbind对于data.frame的怪异行为:

# This is "should work", but it doesn't:
# Create an empty data.frame with the correct names and types
df <- data.frame(A=numeric(), B=character(), C=character(), stringsAsFactors=FALSE)
rbind(df, list(42, 'foo', 'bar')) # Messes up names!
rbind(df, list(A=42, B='foo', C='bar')) # OK...

# If you have at least one row, names are kept...
df <- data.frame(A=0, B="", C="", stringsAsFactors=FALSE)
rbind(df, list(42, 'foo', 'bar')) # Names work now...


但是,如果您只有字符串,那为什么不使用矩阵呢?然后从一个空矩阵开始就可以正常工作:

# Create a 0x3 matrix:
m <- matrix('', 0, 3, dimnames=list(NULL, LETTERS[1:3]))

# Now add a row:
m <- rbind(m, c('foo','bar','baz')) # This works fine!
m

# Then optionally turn it into a data.frame at the end...
as.data.frame(m, stringsAsFactors=FALSE)

关于r - R:控制对rbind()的调用中自动创建的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9435487/

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