我有一个列表,其中每个元素包含一个数据行,其中数据行的行数为 n 。例如,
dfA <- data.frame(A=c("a","a","a"))
dfB <- data.frame(B=c("b","b"))
dfC <- data.frame(C=c("c","c","c"))
dfD <- data.frame(D=c("d","d","d","d"))
combineList <- list(dfA, dfB, dfC, dfD)
按nrow排列的当前列表顺序是3、2、3、4。我想返回一个列表,但要重新排序,以便具有数据行最多的数据框的列表元素排在最前面。数据框的行数最少的list元素排在最后。我不确定如何对待相等的nrow列表元素条目。
你知道我该怎么做吗?
谢谢
答案 0 :(得分:3)
combineList[order(sapply(combineList, nrow), decreasing = TRUE)]
最重要的是,您可以在列表中sapply
nrow
来获得一个向量,然后order
将该向量按照您想要的顺序获取索引:
sapply(combineList, nrow)
# [1] 3 2 3 4
order(sapply(combineList, nrow), decreasing = TRUE)
# [1] 4 1 3 2