我有很多看起来像这样的列表
: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
Run Code Online (Sandbox Code Playgroud)
等等73次
所以列表中有73个列表.这些列表的每个部分都包含两个项目.但事实上它是一个项目,第二个项目是价值.如何以自动方式更改列表,使其看起来像这样:
:List of 73
$ aaaa: num 2
$ cccc: num 7
$ dddd: num 5
$ bbbb: num 6
Run Code Online (Sandbox Code Playgroud)
等等73次
我有很多列表看起来像这样,但每次"aaaa"在不同的地方,所以手动更改是非常耗时的.
对于每一个元素x的mylist,您可以访问第一子列表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
Run Code Online (Sandbox Code Playgroud)
setNames(x,xnames)只返回x标有的元素xnames.
不使用列表.您可能不需要a list并且可以使用向量,这更简单:
lapply到sapply.as.list呼叫.按名称访问其元素非常直观:
myvec <- setNames(sapply(mylist,`[[`,2),sapply(mylist,`[[`,1))
myvec["aa"]
# aa
# 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1372 次 |
| 最近记录: |