R:按嵌套列表中的值对列表进行排序

时间:2014-06-13 10:37:13

标签: r list sorting

数据由类似的过程生成:

x <- rnorm(10)
y <- c("a", "b", "c") 
# chr vectors might have varying length and contents, simplified for sake of example
data_list <- list()
for(i in 1:length(x)) {
  data_list <- append(data_list, list(list(numeric = x[i], char = y)))
}

基本上,生成列表的结构如下:

$ :List of 2
  ..$ numeric: num 0.928
  ..$ char   : chr [1:3] "a" "b" "c"
 $ :List of 2
  ..$ numeric: num 1.4
  ..$ char   : chr [1:3] "a" "b" "c"
...

我想按数字按升序对此列表进行排序,保留初始结构。

我试过解释here的解决方案,但它破坏了chr向量的结构。

3 个答案:

答案 0 :(得分:3)

data_list = data_list[order(sapply(data_list, `[[`, i=1))]

答案 1 :(得分:0)

例如:

data_list[order(rapply(data_list,"numeric",f=c))]

rapply intsruction将提取所有数值,然后我们order

答案 2 :(得分:0)

此外:

data_list[order(unlist(do.call(`c`, data_list)[c(T,F)]))]