R使用标题向量创建空数据框[重复]
Posted
技术标签:
【中文标题】R使用标题向量创建空数据框[重复]【英文标题】:R create empty dataframe with header vector [duplicate] 【发布时间】:2016-01-20 04:44:57 【问题描述】:如何使用列名创建空数据框,其中列是任意长度的向量
c("A","B","C")
我试试
df<-data.frame()
colnames(df)<-c("A","B")
但不工作
【问题讨论】:
为什么需要一个空的data.frame?你可以这样做:df <- data.frame(A = numeric(n), B = character(n), C = logical(n))
对于任何n
。
data.frame(A = c(), B = c())
@RonakShah 你检查过输出了吗?
正如@Roland 所说,您几乎不需要做类似的事情。
但是,它也没有显示任何名称,即 OP 希望在输出中将 A、B 作为列,这里有 0 个变量和 0 个观察值。 str(data.frame(A = c(), B = c())) 'data.frame': 0 obs. of 0 variables
【参考方案1】:
x <- LETTERS[1:3]
df <- as.data.frame(matrix(,0,length(x)))
names(df) <- x
str(df)
# 'data.frame': 0 obs. of 3 variables:
# $ A: logi
# $ B: logi
# $ C: logi
使用 OP 的向量:
x <- c("field1","field2", "field3")
df <- as.data.frame(matrix(,0,length(x)))
names(df) <- x
str(df)
# 'data.frame': 0 obs. of 3 variables:
# $ field1: logi
# $ field2: logi
# $ field3: logi
【讨论】:
例如我有向量 c("field1","field2, filed3") 带一行:as.data.frame(matrix(nrow=0,ncol=length(x),dimnames=list(NULL,x)))
我相信在某些情况下这很有用。例如,想象一下您想要生成一个表(数据框)的情况,其中每一行都是对从外部源检索的临时数据执行的计算结果。在这种情况下,您一开始可能不知道生成的数据框将具有的行数。我认为rbind
每一行,从一个带有命名列的空数据框开始,在那里是有意义的。
@RHertel 不,猜测一个合理的大小,(过度)分配它,仅在需要时才以块的形式增长,最终成为最终大小的子集。
@RHertel 如果您知道迭代次数(通常是这样),您可以分配一个list
,然后在其中放置从外部源返回的data.frame
。在循环结束时,您将rbind
他们与do.call
一起。或者按照罗兰的建议去做。【参考方案2】:
你可以试试这个:
df1 <- data.frame(matrix(vector(),ncol=3))
colnames(df1) <-c("A","B","C")
df1
#[1] A B C
#<0 rows> (or 0-length row.names)
【讨论】:
以上是关于R使用标题向量创建空数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章