gpt4 book ai didi

r - 如何在R中对列表进行排序?

转载 作者:行者123 更新时间:2023-12-04 12:20:04 26 4
gpt4 key购买 nike

我有与此类似的列表列表:

a <- list(
list(day = 5, text = "foo"),
list(text = "bar", day = 1),
list(text = "baz", day = 3),
list(day = 2, text = "quux")
)

字段数量未知,并且这些字段出现故障。

如何根据天对这个列表进行排序?我需要对列表进行升序排序。我已经搜索过,但我只找到了如何对向量进行排序。是否可以对列表进行排序?

最佳答案

为了对给定的“列表列表”进行排序 a您可以尝试使用sapply()使用提取运算符 [[从列表中检索数据。这些用于调用 order() :

a[order(sapply(a, `[[`, i = "day"))]
#[[1]]
#[[1]]$day
#[1] 1
#
#[[1]]$text
#[1] "bar"
#
#
#[[2]]
#[[2]]$day
#[1] 2
#
#[[2]]$text
#[1] "quux"
# ...

正如 this comment 中的建议, 这也可以通过使用 sapply() 中的匿名函数来实现:
a[order(sapply(a, function(x) x$day))]

当在函数定义中使用时,这也适用于 OP 所做的:
sortBy <- function(a, field) a[order(sapply(a, "[[", i = field))]
sortBy(a, "day")

请注意,我们需要将提取运算符 [[ 括起来。在反引号或引号中。

关于r - 如何在R中对列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43477069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com