如何在创建空数据框之前定义列名?

时间:2016-02-29 18:11:03

标签: r dataframe

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

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

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

  

df< - data.frame(“A”= numeric(),“B”= numeric(),    stringsAsFactors = FALSE)

     

DF
  [1] A B
  < 0行> (或0长度的row.names)

但是, 我需要定义列名:
   “A”“B”
外部和之前致电:
      df< - data.frame(...)。

像这样:

  

colnames < - c(“A”“B”)
  df< - data.frame( colnames ,stringsAsFactors = FALSE)

     

df

colnames
    1 A
    2 B

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

  

DF
  [1] A B
  < 0行> (或0长度的row.names)

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

2 个答案:

答案 0 :(得分: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,]

玩得开心!

答案 1 :(得分:0)

由于OP要求一个简短的方法来执行此操作,因此这里是一个单行(在先前已定义的名称之后),它返回一个零行数据框和所需的列名称。

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