使用函数参数作为R中新数据框的名称

时间:2017-11-27 17:46:28

标签: r dataframe assign function-parameter

这很简单,但我已经搜索过,但未能找到解决这个小问题的方法。

我想使用函数的参数作为新数据框的名称,例如:

assign.dataset<-function(dataname){
    x<-c(1,2,3)
    y<-c(3,4,5)
    dataname<<-rbind(x,y)
}

然后

assign.dataset(new.dataframe.name)

只需创建一个名为 dataname 的新数据集。

我尝试使用粘贴分配功能,但没有成功。

非常感谢

2 个答案:

答案 0 :(得分:2)

你可以这样做......

assign.dataset<-function(dataname){
  x<-c(1,2,3)
  y<-c(3,4,5)
  assign(deparse(substitute(dataname)), rbind(x,y), envir=.GlobalEnv)
}

assign.dataset(new.dataframe.name)

new.dataframe.name
  [,1] [,2] [,3]
x    1    2    3
y    3    4    5

答案 1 :(得分:1)

以下是rlang相当于@Andrew的回答:

library(rlang)

assign.dataset<-function(dataname){
  x<-c(1,2,3)
  y<-c(3,4,5)
  assign(quo_name(enquo(dataname)), rbind(x,y), envir=.GlobalEnv)
}

assign.dataset(test_df)

enquo捕获用户提供的参数,并将其与调用该函数的环境捆绑在一起quosurequo_name然后将quosure转换为字符。

但是,我建议反对执行此操作,而不是将函数的输出分配给对象。以下是我将如何做到这一点:

assign.dataset<-function(){
  x<-c(1,2,3)
  y<-c(3,4,5)
  rbind(x,y)
}

test_df = assign.dataset()

<强>结果:

  [,1] [,2] [,3]
x    1    2    3
y    3    4    5