数据由类似的过程生成:
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向量的结构。
答案 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)]))]