【问题标题】:Transform several vectors in one list of lists在一个列表列表中转换多个向量
【发布时间】:2018-07-10 21:41:42
【问题描述】:

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

例如,如果我有向量:

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 生成请求正文时,这会很有用。

【问题讨论】:

    标签: r list vector


    【解决方案1】:

    这应该可行:

    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"
    

    【讨论】:

    • 代码高尔夫:Map(list,name=v1,value=v2).
    • @r2evans 真的很棒,只是它给列表命名的小问题。
    • 是的,这行得通。我也喜欢拥有自己的列表功能的想法
    • Map(list,name=v1,value=v2,USE.NAMES=F)。几乎没有高尔夫:-)
    【解决方案2】:

    另一个选项是pmap 来自purrr

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      • 2020-07-11
      • 2016-05-27
      • 2019-06-22
      • 2012-09-29
      • 1970-01-01
      相关资源
      最近更新 更多