我正在尝试在R中的一个函数内创建一个变量,但是该变量的名称取决于该函数的参数,因此我想使用粘贴对其进行命名。
我将举例说明我的意思
variable <- function(name){
assign(paste0("variable_",name),1)
}
variable("one")
variable_one
如何使用assign
命令,以便可以在函数外部访问变量?我的意思是,当我使用variable_one
时会得到1
(我知道使用<<-
,但不会使用assign
)。
任何帮助将不胜感激。
答案 0 :(得分:1)
您真的需要使用assign
吗?
您可以将它们返回为list
variable <- function(name){
setNames(list(1), paste0("variable_", name))
}
variable("two")
#$variable_two
#[1] 1
如果要使其更通用,可以这样做
variable <- function(name){
setNames(as.list(rep(1, length(name))), paste0("variable_", name))
}
lst1 <- variable(c("two", "three"))
,然后使用[[
lst1[["variable_two"]]
#[1] 1
lst1[["variable_three"]]
#[1] 1
答案 1 :(得分:1)
要在函数外部更改变量,您需要为envir
指定assign
参数。
这将为您带来理想的结果。
variable <- function(name) {
assign(paste0("variable_", name), 1, envir = parent.frame())
}
但是,使用其他解决方案(如Ronak Shah的建议)几乎总是更好的选择,因为如果您过多地使用诸如此类的东西,事情会很快变得混乱。
考虑(使用上述功能):
variable_two <- "twenty"
variable("two")
这将覆盖variable_two
而不会发出警告,有可能导致问题进一步恶化。