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 &lt;- 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使用标题向量创建空数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 R 中指定的列名创建空数据框? [复制]

如何在R中的空数据框中创建新列[重复]

如何使用 R 中的函数创建一个空数据框? [复制]

如何创建一个空数据框并附加它[重复]

R语言:常用函数

如何标准化r中的向量[重复]