我想以这样一种方式在R中创建一个空的数据框,即将列名定义为这样的函数的输入参数:
testfunc <- function(columname){
print(data.frame(columname=NA))
}
testfunc('hello')
但是当我运行函数时,我得到的是这样的:
> testfunc('hello')
columname
1 NA
您会看到列名是columname
而不是hello
。我的代码有什么问题?为了获得以列为函数输入字符串的数据帧作为输出,应该怎么做?
答案 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"*