拆分一个列表,其元素是多个元素列表
Split a list whose elements are multiple element lists
假设我有一个列表 a
定义为:
a <- list("aaa;bbb", "aaa", "bbb", "aaa;ccc")
我想用分号 ;
拆分此列表,仅获取唯一值,然后 return 另一个列表。到目前为止,我已经使用 str_split()
:
拆分了列表
a <- str_split(a, ";")
这给了我
> a
[[1]]
[1] "aaa" "bbb"
[[2]]
[1] "aaa"
[[3]]
[1] "bbb"
[[4]]
[1] "aaa" "ccc"
我怎样才能操纵这个列表(使用 unique()
?)给我类似
的东西
[[1]]
[1] "aaa"
[[2]]
[1] "bbb"
[[3]]
[1] "ccc"
或者更简单地说,
[[1]]
[1] "aaa" "bbb" "ccc"
一种选择是在列表中使用 list()
和 unique()
和 unlist()
。
# So first you use your code
a <- list("aaa;bbb", "aaa", "bbb", "aaa;ccc")
# Load required library
library(stringr) # load str_split
a <- str_split(a, ";")
# Finally use list() with unique() and unlist()
list(unique(unlist(a)))
# And the otuput
[[1]]
[1] "aaa" "bbb" "ccc"
base R 中的一种替代方法是使用 rapply
,它将函数应用于嵌套列表中的每个最内层元素,并且 return 是默认情况下可能的最简化对象。在这里,它 return 是一个字符向量。
unique(rapply(a, strsplit, split=";"))
[1] "aaa" "bbb" "ccc"
到return一个列表,将输出包装在list
中
list(unique(rapply(a, strsplit, split=";")))
[[1]]
[1] "aaa" "bbb" "ccc"
假设我有一个列表 a
定义为:
a <- list("aaa;bbb", "aaa", "bbb", "aaa;ccc")
我想用分号 ;
拆分此列表,仅获取唯一值,然后 return 另一个列表。到目前为止,我已经使用 str_split()
:
a <- str_split(a, ";")
这给了我
> a
[[1]]
[1] "aaa" "bbb"
[[2]]
[1] "aaa"
[[3]]
[1] "bbb"
[[4]]
[1] "aaa" "ccc"
我怎样才能操纵这个列表(使用 unique()
?)给我类似
[[1]]
[1] "aaa"
[[2]]
[1] "bbb"
[[3]]
[1] "ccc"
或者更简单地说,
[[1]]
[1] "aaa" "bbb" "ccc"
一种选择是在列表中使用 list()
和 unique()
和 unlist()
。
# So first you use your code
a <- list("aaa;bbb", "aaa", "bbb", "aaa;ccc")
# Load required library
library(stringr) # load str_split
a <- str_split(a, ";")
# Finally use list() with unique() and unlist()
list(unique(unlist(a)))
# And the otuput
[[1]]
[1] "aaa" "bbb" "ccc"
base R 中的一种替代方法是使用 rapply
,它将函数应用于嵌套列表中的每个最内层元素,并且 return 是默认情况下可能的最简化对象。在这里,它 return 是一个字符向量。
unique(rapply(a, strsplit, split=";"))
[1] "aaa" "bbb" "ccc"
到return一个列表,将输出包装在list
list(unique(rapply(a, strsplit, split=";")))
[[1]]
[1] "aaa" "bbb" "ccc"