我是R的新手并且正在寻找以下内容: 我的意见:
v = list(bob=c("aa", "cc"), cas=c("tt", "ff"), john=c("aa", "bb"))
v
$bob
[1] "aa" "cc"
$cas
[1] "tt" "ff"
$john
[1] "aa" "bb"
我想根据里面的字符向量进行排序,找到我想要的输出:
sorted_v
$john
[1] "aa" "bb"
$bob
[1] "aa" "cc"
$cas
[1] "tt" "ff"
如何获取sorted_v?
答案 0 :(得分:2)
我们可以paste
将所有列表元素放在一起,sort
,然后提取它们的names
。
sorted_v <- v[names(sort(sapply(v, paste0, collapse = "")))]
sorted_v
#$john
#[1] "aa" "bb"
#$bob
#[1] "aa" "cc"
#$cas
#[1] "tt" "ff"
OR
作为评论中提到的@ycw,我们也可以使用toString
代替paste0
,collapse
组合:
sorted_v <- v[names(sort(sapply(v, toString)))]
同样使用@ A5C1D2H2I1M1N2O1R2T1和@ ycw的输入我们可以将其缩小为
v[order(sapply(v, toString))]
#$john
#[1] "aa" "bb"
#$bob
#[1] "aa" "cc"
#$cas
#[1] "tt" "ff"