gpt4 book ai didi

r - 根据R中另一个列表的顺序对列表进行排序

转载 作者:行者123 更新时间:2023-12-05 00:20:42 24 4
gpt4 key购买 nike

我有大约 20 个相关的 2 列表(即每个列表的位置 n 中的元素是相关的)。
我现在想按升序对每个列表中的第二个列表 (dens) 中的值进行排序,并对其他列表进行相同的更改,以便在完成后列表之间仍然具有正确的关系。

示例:

list_1 <- list(a = c(44,47), dens = c(2331,1644))
list_2 <- list(a=66, dens= 1890)
list_3 <- list(a=c(44,46,48,50), dens=c(8000,1452,1596,7521))
mylist <- list(list_1, list_2, list_3)
names(mylist)<-c("ID_1","ID_2","ID_3")

需要的结果:

ID_1:

$ a: num [1:2] 47 44

$ dens: num[1:2] 1644 2331

ID_2:

$ a: num 66

$ dens: num 1890

ID_3:

$ a: num [1:4] 46 48 50 44

$ dens: num[1:4] 1452 1596 7521 8000



好吧,我需要一个针对不同列表长度的动态解决方案。
我尝试了一些事情,但一切都失败了,并出现“列表不可能”或“输入必须是原子/因素”等消息。

有人有什么想法吗?

最佳答案

只需在内部级别使用带有排序步骤的嵌套 lapply 调用:

> newlist <- lapply(mylist, function(LL) {
lapply(LL, function(col){ col[order(LL[['dens']]) ]})})
> newlist
$ID_1
$ID_1$a
[1] 47 44

$ID_1$dens
[1] 1644 2331


$ID_2
$ID_2$a
[1] 66

$ID_2$dens
[1] 1890


$ID_3
$ID_3$a
[1] 46 48 50 44

$ID_3$dens
[1] 1452 1596 7521 8000

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

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