排序列表,命令无效

3
我有以下列表:
我的列表
[[1]]
[1] 11
[[2]]
[1] 9
[[3]]
[1]
10

我希望对它进行排序。 我已经尝试过

sort(mylist)

错误:mylist必须是原子的。
sort.list(mylist)

sort.list(mylist) 出错: 'x' 必须是原子向量才能进行排序。 你是否在一个列表上调用了 'sort' 函数?

order(mylist)

使用order(mylist)出错:在orderVector1中未实现类型“list”。

3个回答

3
我们需要在一个向量上进行排序。假设列表中每个元素的长度仅为1,unlist 'mylist',在向量上order,然后使用它。
mylist[order(unlist(mylist))]
#[[1]]
#[1] 9

#[[2]]
#[1] 10

#[[3]]
#[1] 11

1
使用列表解决了问题。谢谢。 - Thegamer23

2

purrr 包可能对于这个任务来说有些过度,但它值得探索,特别是如果你正在寻找一个处理列表的工具包:

library(purrr)
mylist %>% sort_by(sort)

谢谢,也许我将来会查看它。 - Thegamer23

1

您的列表每个条目只包含一个值。因此,您也可以通过使用do.call(c,...)将其转换为向量,然后对向量进行排序:

sort(do.call(c,mylist))

#[1]  3 10 20

是的,我知道这个解决方案,但我正在尝试检查是否有一种方法可以针对列表(仅出于好奇)。我已经投票赞成,因为不知道的人可能会觉得它有用。 - Thegamer23

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接