基本 R - 函数一般问题 - 输出带有输入名称的变量

  • 本文关键字:变量 输出带 函数 问题 基本 r
  • 更新时间 :
  • 英文 :


有没有办法为我想在函数中输出的变量编写输入名称?我目前有这个非常简单的例子:

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

最新更新