r - 将列表项更改为名称 R

标签 r list

我有很多看起来像这样的列表

:List of 73
..$ :List of 2
.. ..$: chr "aaaa"
.. ..$: num 2
..$ :List of 2
.. ..$: chr "cccc"
.. ..$: num 7
..$ :List of 2
.. ..$: chr "dddd"
.. ..$: num 5
..$ :List of 2
.. ..$: chr "bbbb"
.. ..$: num 6

等等 73 次

所以列表中有 73 个列表。这些列表的每个部分都包含两个项目。但实际上它是一项,第二项是值。如何以自动方式更改列表,使其看起来像这样:
:List of 73
$ aaaa: num 2
$ cccc: num 7
$ dddd: num 5
$ bbbb: num 6

等等 73 次

我有很多类似这样的列表,但是每次“aaaa”都在不同的位置,因此手动更改非常耗时。

最佳答案

对于每个元素 xmylist ,您可以使用 x[[1]] 访问第一个子列表;第二个是 x[[2]] .此函数也可以称为 `[[`(x,i)哪里i是子列表的编号。

mylist    <- list(list("aa",2),list("cc",7))
str(mylist)
# List of 2
#  $ :List of 2
#   ..$ : chr "aa"
#   ..$ : num 2
#  $ :List of 2
#   ..$ : chr "cc"
#   ..$ : num 7
mynewlist <- setNames(lapply(mylist,`[[`,2),sapply(mylist,`[[`,1))
str(mynewlist)
# List of 2
#  $ aa: num 2
#  $ cc: num 7
setNames(x,xnames)刚刚返回 x其元素标记为 xnames .

不使用列表。 您可能不需要 list并且可以使用更简单的向量:
  • 在我的回答中,切换 lapplysapply .
  • 在ColonelBeauvel's 中,删除as.list称呼。

  • 按名称访问其元素非常直观:
    myvec <- setNames(sapply(mylist,`[[`,2),sapply(mylist,`[[`,1))
    myvec["aa"]
    # aa 
    #  2 
    

    关于r - 将列表项更改为名称 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30126829/

    相关文章:

    R 的带有 null 函数的 tapply

    python - 在python中查找两个字符串列表的交集

    list - 如何访问我添加的带有缺点的列表元素(:) operator?

    r - 了解R环境变量和相关概念

    r - R中从多个起点和终点生成序列的向量化方法

    c++ - 将 QList append 到 QList<QList>

    python - 存储Minhash的结果

    html - 将 ul 嵌套在 ol 中

    在没有 for 循环的情况下重命名列表的命名列表的部分

    r - 如何解决 r 中的 'argument x is empty' 错误(Shiny Web 应用程序)