代码之家  ›  专栏  ›  技术社区  ›  Quinten

胶内胶R

  •  1
  • Quinten  · 技术社区  · 5 月前

    我想用a glue 内部a 在这里,我创建了一个简单的可重复示例:

    library(glue)
    l <- c("a", "b", "c")
    input = list(a = "test1",
                 b = "test2",
                 c = "test3")
    
    for (i in l) {
      print(glue("{input${i}}"))
    }
    #> Error:
    #> ! Failed to parse glue component
    #> Caused by error in `parse()`:
    #> ! <text>:1:7: unexpected '{'
    #> 1: input${
    #>           ^
    

    创建于2024年8月5日 reprex v2.1.0

    这将返回一个错误,因为我们想在花括号内使用花括号。我的预期输出应该是这样的:

    test1
    test2
    test3
    

    因为我希望胶水看起来使用向量中的字母 l 打印列表中提到的值 input 这基本上是 input$a 退货 test1 .

    所以我想知道是否有可能在R中的胶水中使用胶水?

    2 回复  |  直到 5 月前
        1
  •  2
  •   Ronak Shah    5 月前

    这是从数据帧(或本例中的列表)中选择列的经典R方法。 Dynamically select data frame columns using $ and a character value

    input[l] 会给你 l 元素 input .

    input[l]
    #$a
    #[1] "test1"
    
    #$b
    #[1] "test2"
    
    #$c
    #[1] "test3"
    

    或者在 for 循环使用 [[]] 以选择单个元素。

    for (i in l) {
      print(glue("{input[[i]]}"))
    }
    
    #test1
    #test2
    #test3
    
        2
  •  2
  •   Nir Graham    5 月前

    您确实可以选择嵌套调用以进行粘合。

    library(glue)
    l <- c("a", "b", "c")
    input = list(a = "test1",
                 b = "test2",
                 c = "test3")
    
    for (i in l) {
      print(glue(glue("{{input${i}}}")))
    }
    #test1
    #test2
    #test3