有没有办法为我想在函数中输出的变量编写输入名称?我目前有这个非常简单的例子:
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。
如果这是一个愚蠢的问题,我很抱歉,搜索后我找不到答案,或者更确切地说,我不知道如何寻找它。
这只是一个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问题。
正如 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)
您可以使用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