首页 文章

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

提问于
浏览
0

我想制作一个空数据帧df(0行),
有2个列名: "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)

但是,我需要定义col名称:
"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

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

    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

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

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

相关问题