提前在函数内指定数据帧的列名

and*_*ewj 4 r

假设您正在尝试在函数中创建数据框.我希望能够提前将列名定义为函数的参数之一.请使用以下代码:

  foo <- function(a) {
    answer <- data.frame(a=1:5)
    return(answer)
    }
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我希望能够在函数中指定列名的值foo(),例如foo('my.name'),使得answer具有列名my.name而不是a.我想你可以在函数内编写这个代码colnames(),但我对另一种方法很感兴趣.

Sha*_*ane 7

使用colnames是我知道data.frame的唯一方法,虽然colnames()本身就是一个向量,所以不需要对它进行任何迭代.此版本处理两列:

foo <- function(cname) {
   answer <- data.frame(1:5, 1:5)
   colnames(answer) <- cname
   return(answer)
}
> foo(c("a","b"))
  a b
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
Run Code Online (Sandbox Code Playgroud)