【问题标题】:How to reorder a list by the size of the data frame in each list element?如何根据每个列表元素中数据框的大小对列表进行重新排序?
【发布时间】:2018-08-01 11:12:32
【问题描述】:

我有一个列表,其中每个元素都包含一个带有 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。我想返回一个列表,但重新排序,以便具有最多行的数据框的列表元素排在第一位。具有最少行数的数据框的列表元素排在最后。我不确定如何处理相等的 nrow 列表元素条目。

知道我该怎么做吗?

谢谢

【问题讨论】:

    标签: r


    【解决方案1】:
    combineList[order(sapply(combineList, nrow), decreasing = TRUE)]
    

    关键在于您可以在列表中sapplynrow 获取一个向量,然后order 这个向量以您想要的顺序获取索引:

    sapply(combineList, nrow)
    # [1] 3 2 3 4
    order(sapply(combineList, nrow), decreasing = TRUE)
    # [1] 4 1 3 2
    

    【讨论】:

      猜你喜欢
      • 2020-07-22
      • 2017-02-08
      • 2023-03-05
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 2020-12-27
      • 2012-03-11
      • 1970-01-01
      相关资源
      最近更新 更多