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

在一个列表中转换多个向量

  •  0
  • Bulat  · 技术社区  · 6 年前

    我正在寻找一种方法,将相同长度的几个向量转化为命名列表的列表。

    例如,如果我有向量:

    v1 <- c("a", "b", "c")
    v2 <- c("x", "y", "z")
    

    ,列表应为:

    list(
      list(
        name = "a",
        value = "x"
      ),
      list(
        name = "b",
        value = "y"
      )
      list(
        name = "c",
        value = "z"
      )
    )
    

    当您为在一个请求中接受多个记录的API生成请求正文时,这可能很有用。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Bulat    6 年前

    这应该有效:

    l <- mapply(
      function(name, value) list(name = name, value = value),
      v1, v2,
      USE.NAMES = FALSE, 
      SIMPLIFY = FALSE
    )
    str(l)
    
    # List of 3
    # $ :List of 2
    #  ..$ name : chr "a"
    #  ..$ value: chr "x"
    # $ :List of 2
    #  ..$ name : chr "b"
    # ..$ value: chr "y"
    # $ :List of 2
    #  ..$ name : chr "c"
    #  ..$ value: chr "z"
    
        2
  •  2
  •   akrun    6 年前

    另一个选择是 pmap purrr

    purrr::pmap(list(name = v1, value = v2), list)