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)