R - 如何对命名的字符向量列表进行排序

时间:2017-09-20 03:01:13

标签: r

我是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?

1 个答案:

答案 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代替paste0collapse组合:

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"