是否可以为要在函数中输出的变量编写输入名称?我目前有一个非常简单的示例:
power <- function(value1,value2) {
sumValues <<- value1 + value2
}
power(value1 = 2, value2 = 3)
哪个返回变量调用sumValues和答案。 我正在尝试执行以下操作:
power <- function(value1,value2,Variable_name) {
Variable_name <<- value1 + value2
}
power(value1 = 2, value2 = 3, Varieble_name = SumofValues)
在我命名的变量之后,我将返回一个变量,在这种情况下为SumofValues。
很抱歉,这是一个愚蠢的问题,我在搜索后找不到答案,或者更确切地说,我不知道如何查找。
答案 0 :(得分:2)
这只是一个assign
的把戏。参见help("assign")
。
power <- function(value1, value2, Variable_name) {
Variable_name <- as.character(substitute(Variable_name))
assign(Variable_name, value1 + value2, envir = .GlobalEnv)
}
power(value1 = 2, value2 = 3, Variable_name = SumofValues)
SumofValues
#[1] 5
请不要使用<<-
,除非您有非常非常好的理由这样做。即使在这种情况下,也请确保您不尝试解决XY problem。
答案 1 :(得分:1)
正如Rui所说,使用<<-
是一个坏主意。但是您甚至不需要assign()
。只需按照通常的方式写作业即可:
power <- function(value1,value2) {
value1 + value2
}
SumofValues <- power(value1 = 2, value2 = 3)
如果您有很多不同的名称,请使用它们来命名列表中的元素。例如,
names <- c("SumofValues", "OtherName")
result <- list()
result[[names[1]]] <- power(2, 3)
result[[names[2]]] <- power(3, 4)
答案 2 :(得分:0)
您可以使用eval(parse(text=))
来完成此操作。
power <- function(value1,value2,Variable_name) {
textpar <- paste0(Variable_name," <<- ",value1," + ",value2)
eval(parse(text = textpar))
}
power(value1 = 2, value2 = 3, Variable_name = "SumofValues")
SumofValues
5