如何通过R

时间:2019-04-23 16:56:47

标签: r dataframe naming

我想以这样一种方式在R中创建一个空的数据框,即将列名定义为这样的函数的输入参数:

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

testfunc('hello')

但是当我运行函数时,我得到的是这样的:

> testfunc('hello')
  columname
1        NA

您会看到列名是columname而不是hello。我的代码有什么问题?为了获得以列为函数输入字符串的数据帧作为输出,应该怎么做?

2 个答案:

答案 0 :(得分:1)

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

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

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

当前方法行不通的原因是,您实际上是在数据框中为单列分配名称columname。如果要使用动态字符串名称,则必须访问names()或类似名称。

答案 1 :(得分:0)

使用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"*