【问题标题】:How to pass on the name of a variable in R如何在R中传递变量的名称
【发布时间】:2021-03-14 19:23:01
【问题描述】:

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

    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”)找到该变量,因为我必须多次使用相同的过程。

【问题讨论】:

    标签: r variables environment-variables global-variables


    【解决方案1】:

    我想你在找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 这样的常用函数名作为变量名。

    【讨论】:

      猜你喜欢
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多