R 使用函数参数作为使用超级赋值的数据帧的名称<<-

R 使用函数参数作为使用超级赋值的数据帧的名称<<-,r,function,assign,R,Function,Assign,我希望将data.frame分配给全局环境,以便data.frame的名称与传递到我创建的函数中的名称相同。执行此操作的典型方法是使用assign(arg_name,x,envir=.GlobalEnv): 有什么建议吗?另外,deparse(替换(x))仍然是提取此类案例的data.frame名称的最佳(最短)方法吗 谢谢正如评论中所说,这是一种不好的做法,但值得理解的是,为什么第二种函数变体不起作用 my_fun2谢谢这似乎回答了我的问题(只需使用assign)。。。唯一的原因是使用Yes缩

我希望将
data.frame
分配给全局环境,以便
data.frame
的名称与传递到我创建的函数中的名称相同。执行此操作的典型方法是使用
assign(arg_name,x,envir=.GlobalEnv)

有什么建议吗?另外,
deparse(替换(x))
仍然是提取此类案例的
data.frame
名称的最佳(最短)方法吗


谢谢

正如评论中所说,这是一种不好的做法,但值得理解的是,为什么第二种函数变体不起作用


my_fun2
谢谢这似乎回答了我的问题(只需使用
assign
)。。。唯一的原因是使用
Yes缩短
assign(arg_name,x,envir=.GlobalEnv)
语法,这是非常糟糕的做法。您正在创建的代码让其他人感到困惑,并且难以维护。学习创建和使用具有正确返回值的函数。在R中,通常建议作用域运算符

my_fun <- function(x) {
  
  arg_name <- deparse(substitute(x)) 
  print(arg_name)
  
  x[["newvariable"]] <- 1
  
  assign(arg_name, x, envir = .GlobalEnv)

}

my_fun(mtcars)
my_fun2 <- function(x) {
  
  arg_name <- deparse(substitute(x)) 
  print(arg_name)
  
  x[["newvariable"]] <- 1
  
  arg_name <<- x
}

my_fun2(mtcars)