如何在列表及其条目命名时对列表列表进行排序?

时间:2018-02-02 00:35:41

标签: r

我正在尝试按第一个参数排序列表,例如:

a <- list(sem = 23, do = 32)
b <- list(sem = 82, do = 12)
c <- list(sem = 1, do = 13)
d <- list(sem = 42, do = 13)

main.list <- list(a,b,c,d)

因此结果将是一个main.list,其元素按如下顺序排列:c,a,d,b

我尝试sapply,但没有成功,就这样:

main.list[order(sapply(main.list,'[[',"sem"))]

我知道它的工作方式是通过列表中的位置调用列表条目:

main.list[order(sapply(main.list,'[[', 1))]

但我想用它的名字来称呼它,而不是它的位置。 到目前为止,我在很长的列表中找到的解决方案是添加一个代码束来查找给定命名条目的位置。我想避免使用额外的代码,我认为我使用的是sapply函数错误。

我希望对此有所了解。

1 个答案:

答案 0 :(得分:0)

尝试

theorder = as.data.frame (colA = lapply(main.list, "[[", 1)) %>%
arrange(colA)

main.list[names(theorder)]