如何在 R 中传递变量的名称

How to pass on the name of a variable in R

所以,我正在制作一个类似

的函数
    example <- function(x, y){
z <- data.frame("variable name" = y, "Quantity of 1" = sum(x==1, na.rm = TRUE))
eval(as.character(y)) <<- z
}

list <- sample(c(0,1), size = 12, replace = TRUE)

如果我使用

评估我的函数
example(list, "list")

它给了我一个

error in eval(as.character(y)) <<- z: object 'y' not found

我希望函数给我一个变量,我可以通过传递给它的名称(如“Y”)找到它,因为我必须多次使用相同的过程。

我想你在找 assign:

example <- function(x, y){
  z <- data.frame("variable name" = y, "Quantity of 1" = sum(x==1, na.rm = TRUE))
  assign(y, z, envir = parent.frame())
}

list <- sample(c(0,1), size = 12, replace = TRUE)

example(list, "list")

list
#>   variable.name Quantity.of.1
#> 1          list             5

但是,请注意,这不是一个好主意。您应该尽量避免编写可以覆盖全局环境(或其他调用框架)中的对象的函数,因为这可能会产生意想不到的后果并且不是惯用的 R。

最好有:

example <- function(x, y){
  data.frame("variable name" = y, "Quantity of 1" = sum(x==1, na.rm = TRUE))
}

并做

list <- example(list, "list")

或者,更好的是:

example <- function(x){
  data.frame("variable name" = deparse(substitute(x)), 
             "Quantity of 1" = sum(x==1, na.rm = TRUE))
}

所以你可以这样做:

list <- example(list)

此外,最好避免使用像 list 这样的通用函数名作为变量名。