【问题标题】:Creating conditional (changing) name in a list() in R在 R 的 list() 中创建条件(更改)名称
【发布时间】:2018-06-23 01:01:09
【问题描述】:

我想知道是否有办法在 R list() 中创建 条件名称

例如,下面如果blue = TRUE,我希望我的列表输出Nov. = 1 2 3 4,但是当blue = FALSE 我希望我的列表输出Sep. = 1 2 3 4

这是我尝试过的(没有成功):

bar <- function(blue = TRUE){

list(if(blue) "Nov." else "Sep." = 1:4)
}
# Example of use:
bar()

【问题讨论】:

    标签: r list function


    【解决方案1】:

    这样的事情可能是最好的选择:

    bar <- function(blue=TRUE) {
        x <- list(1:4)
        setNames(x, ifelse(blue, "Nov.", "Sep."))
    }
    
    bar()
    ## $`Nov.`
    ## [1] 1 2 3 4
    
    bar(FALSE)
    ## $`Sep.`
    ## [1] 1 2 3 4
    

    【讨论】:

      【解决方案2】:

      使用tibble::lstrlang,您实际上可以这样写:

      library(tibble)
      library(rlang)
      bar <- function(blue = TRUE){
        lst(!! (if(blue) "Nov." else "Sep.") := 1:4)
      }
      bar()
      # $`Nov.`
      # [1] 1 2 3 4
      bar(F)
      # $`Sep.`
      # [1] 1 2 3 4
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-10
        • 1970-01-01
        相关资源
        最近更新 更多