如何从R中的函数设置数据框中的列名

How to set column name in dataframe from function in R

我想在 R 中创建一个空数据框,将列名定义为函数的输入参数,如下所示:

testfunc <- function(columname){
  print(data.frame(columname=NA))
}

testfunc('hello')

然而,当我 运行 我得到的函数是这样的:

> testfunc('hello')
  columname
1        NA

如您所见,列名称是 columname 而不是 hello。我的代码有什么问题?它应该怎么做才能将列命名为函数的输入字符串的数据帧作为输出?

尝试在函数中创建一个空数据框,然后手动分配所需的列名:

testfunc <- function(columname) {
    df <- data.frame(col=character())
    names(df) <- columname
    return(df)
}

当然,你会有一个空数据框,这意味着你需要使用类似 rbind 的东西来添加新行。

您当前的方法不起作用的原因是您实际上是将名称 columname 分配给数据框中的单个列。如果您想使用动态字符串名称,则必须访问 names() 或类似的内容。

使用 assign.

testfunc <- function(columnname) {
  x <- NA
  assign(columnname, x)
  return(data.frame(mget(columnname)))
}

testfunc('hello')
#   hello
# 1    NA

class(testfunc('hello'))
# [1] "data.frame"*