【问题标题】:Is there an R function for sorting list elements using one of its elements?是否有使用其中一个元素对列表元素进行排序的 R 函数?
【发布时间】:2023-04-07 13:53:02
【问题描述】:

我正在做一些模拟,我有一个列表,其中第一个元素是一个向量,其中某些系数使用来自相应(模拟)数据帧的值计算,第二个元素是一个列表,其中存储了这些相应的数据帧。

Results[[1]][[i]] # returns a coefficient
Results[[2]][[i]] # returns a corresponding data frame

我想按系数对元素进行排序,以便最高系数和相应的数据框排在第一位,第二好的解决方案排在第二位,依此类推。我可以通过以下方式获得最高系数使用 which.max() 函数,并通过运行 Results[[2]][[which.max(Results[[1]])]] 来访问数据库。但是,我想获得其他具有高系数的数据库。我的问题是,有没有一种简单的解决方案可以以这种方式对列表进行排序?

【问题讨论】:

  • 你能做一个可重现的例子吗?

标签: r list sorting


【解决方案1】:

假设Results[[1]]中的每个元素都是一个数字,我们可以使用order函数:

set.seed(123)
l1 <- replicate(10,{runif(1)},simplify=F) # Results1 equivalent
l2 <- lapply(1:10,function(x) return(x)) # Results2 equivalent
l1
[1]]
[1] 0.2875775

[[2]]
[1] 0.7883051

[[3]]
[1] 0.4089769

[[4]]
[1] 0.8830174

[[5]]
[1] 0.9404673

[[6]]
[1] 0.0455565

[[7]]
[1] 0.5281055

[[8]]
[1] 0.892419

[[9]]
[1] 0.551435

[[10]]
[1] 0.4566147

l2
> l2
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] 4

[[5]]
[1] 5

[[6]]
[1] 6

[[7]]
[1] 7

[[8]]
[1] 8

[[9]]
[1] 9

[[10]]
[1] 10

l2 <- l2[order(unlist(l1), decreasing =T)]
l2
> l2
[[1]]
[1] 5

[[2]]
[1] 8

[[3]]
[1] 4

[[4]]
[1] 2

[[5]]
[1] 9

[[6]]
[1] 7

[[7]]
[1] 10

[[8]]
[1] 3

[[9]]
[1] 1

[[10]]
[1] 6

【讨论】:

  • 非常感谢您提供简单的解决方案和良好的解释!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-24
相关资源
最近更新 更多