如何从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"*
我想在 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"*