使用函数参数作为 R 中新数据框的名称
Use function argument as name for new data frame in R
这很简单,但是我已经搜索并没有找到解决这个小问题的方法。
我想使用函数的参数作为新数据框的名称,例如:
assign.dataset<-function(dataname){
x<-c(1,2,3)
y<-c(3,4,5)
dataname<<-rbind(x,y)
}
然后
assign.dataset(new.dataframe.name)
刚刚创建了一个名为 dataname.
的新数据集
我尝试使用 paste 和 assign 函数但没有成功。
非常感谢
你可以这样做...
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
这是 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
捕获用户提供的参数并将其与调用函数的环境捆绑到 quosure
中。 quo_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
这很简单,但是我已经搜索并没有找到解决这个小问题的方法。
我想使用函数的参数作为新数据框的名称,例如:
assign.dataset<-function(dataname){
x<-c(1,2,3)
y<-c(3,4,5)
dataname<<-rbind(x,y)
}
然后
assign.dataset(new.dataframe.name)
刚刚创建了一个名为 dataname.
的新数据集我尝试使用 paste 和 assign 函数但没有成功。
非常感谢
你可以这样做...
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
这是 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
捕获用户提供的参数并将其与调用函数的环境捆绑到 quosure
中。 quo_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