如何在制作空数据框之前定义列名?
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)
【讨论】:
以上是关于如何在制作空数据框之前定义列名?的主要内容,如果未能解决你的问题,请参考以下文章