如何在制作空数据框之前定义列名?

Posted

技术标签:

【中文标题】如何在制作空数据框之前定义列名?【英文标题】:How to define the col names BEFORE making an empty Data Frame? 【发布时间】:2016-06-12 21:40:19 【问题描述】:

我想制作一个 数据框 df(0 行), 有 2 个列名:"A""B"。 这是一个简单的例子。可能有数百个列名...... (稍后将添加数值为 0 到 1 的行 - 即:0.80 0.20)。

将首先展示我所拥有的(工作正常), 然后我需要什么,(但不知道该怎么做!)。

这就是我所拥有的,它工作正常:

df

df [1] 甲乙(或 0 长度行名称)

但是, 我需要定义 col 名称:"A""B"在调用之前和之前: df

像这样:

列名 df colnames, stringsAsFactors=FALSE)

df

列名 1个 2乙

df 错误!...我需要的是: (模拟需要的空df,就像上面的第一个例子)

df [1] 甲乙(或 0 长度行名称)

如何在 colnames 生成空数据框 df 之前指定列名? 谢谢!

【问题讨论】:

【参考方案1】:

这只是一种解决方法,但应该适合您:

colnames <- c("A","B")

l <- list()
l[[ colnames[1] ]] <- NA
l[[ colnames[2] ]] <- NA

df <- as.data.frame(l)
df <- df[ -1, ]

> str(df)
[1] A B
<0 rows> (or row.names with length 0)

一个较短的版本如下:

colnames <- c("A","B")

d <- c(NA,NA)
names(d) <- colnames
df <- data.frame(rbind(d))[-1,]

玩得开心!

【讨论】:

谢谢!但你看到了吗?我需要在调用 df=data.frame(...) 之前定义 2 个 col 名称“A”和“B”。看看我上面的 NEED 示例。 对不起!我刚刚更正了答案!有点晚了;o) 现在应该对你有用。 Thks Seily。看到你的更正。有用。但是如果不先定义一个列表,难道没有更简单的方法吗?没有这么多中间步骤?...我正在尝试直接在调用内部使用 colnames:df=data.frame(...colnames here!inside.....)。只需 2 个步骤即可完成:1) 定义 colnames 然后 2) 定义 df =data.frame(...using colnames...). 干得好,Seily!谢谢/丹克! :-)【参考方案2】:

由于 OP 要求提供一种简短的方法来执行此操作,因此这里有一个单行(在之前定义了 colnames 之后),它返回一个包含零行和所需列名的数据框。

colnames <- c('A', 'B')
df <- setNames(as.data.frame(matrix(nrow = 0, ncol = 2)), nm = colnames)

【讨论】:

以上是关于如何在制作空数据框之前定义列名?的主要内容,如果未能解决你的问题,请参考以下文章

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

python 使用列名创建空数据框

通过分配字符串向量创建具有列名的空数据框? [复制]

java - 如何在java中组合(连接)具有相同列名的两个数据框

如何在熊猫数据框中插入列名? [复制]

如何在 R 中将行添加到带有标题的空数据帧? [复制]