我有一个对象名x
,它是一个包含内部列表的列表。
`x$population`
output
[[1]]
[[1]][[1]]
[1] 1
[[1]][[2]]
[1] 11
[[1]][[3]]
[1] 1
[[2]]
[[2]][[1]]
[1] 1
[[2]][[2]]
[1] 20
[[2]][[3]]
[1] 2
我希望能够根据第三个元素对列表进行排序:
x$population[[2]][[3]]
但我不知道该怎么做。
我不知道如何开始这样做,而不是得到一些重新创建问题的模拟代码:
z <- list()
z[[1]] <- list(1, 10, 0.5)
z[[2]] <- list(1, 10, 0.87)
我将如何根据每个列表的第三个元素(0.5,0.87)对z进行排序,以使较大的值位于顶部。
提前致谢。
答案 0 :(得分:4)
1)选出第三个元素,按顺序获取他们的顺序和下标:
z[order(sapply(z, "[[", 3))]
2)另一种方法是将数据表示为矩阵a
,然后对其进行排序:
a <- sapply(z, unlist)
a[, order(a[3, ])]
答案 1 :(得分:1)
明确地做:我将提取第三个元素并对其进行排序。
我创建了一个更复杂的列表:
z <- list()
z[[1]] <- list(1, 10, 0.5)
z[[2]] <- list(1, 10, 0.87)
z[[3]] <- list(1, 10, 0.2)
我提取每个元素的第三个元素:
thirdelt <- sapply(z, function(x)x[[3]])
然后我对它进行排序:
thirdelt_order <- order(thirdelt)
最后我申请了:
z <- z[thirdelt_order]