【问题标题】:How to return a list of maximum-nrow data frames?如何返回最大nrow数据帧列表?
【发布时间】:2018-07-31 16:15:51
【问题描述】:

给定最小的数据示例:

dfA <- data.frame(A=c("a","a","a"))
dfB <- data.frame(B=c("b","b"))
dfC <- data.frame(C=c("c","c","c"))
combineList <- list(dfA, dfB, dfC)

我想返回一个列表,每个列表元素一个数据框,具有最大行数的数据框,即 dfA 作为一个列表元素,dfC 作为第二个列表元素。它应该忽略 dfB,因为它的行数太少。

另一个例子:

dfA <- data.frame(c("a","a","a"))
dfB <- data.frame(c("b","b"))
dfC <- data.frame(c("c","c","c"))
dfD <- data.frame(c("d","d","d","d","d"))
combineList <- list(dfA, dfB, dfC, dfD)

我应该只有一个元素的列表:dfD,因为它有五个元素。

我试图避免一些神秘的 C 风格的带有整数标志的 for 循环。

【问题讨论】:

  • 你的意思是i1 &lt;- sapply(combineList, nrow); combineList[i1 != min(i1)]
  • 谢谢大家。我会试一试,看看它是否能满足我的需要。

标签: r


【解决方案1】:

我们可以使用这个:

ind <- sapply(combineList, nrow)
combineList[ind==max(ind)]

【讨论】:

  • 组合列表?它属于什么包?
  • @AnthonyNash - 这是你名单的名字。
  • sigh,抱歉 - 非常漫长的一天。
【解决方案2】:

我们可以使用

combineList[which.max(sapply(combineList, nrow))]

【讨论】:

    猜你喜欢
    • 2018-10-02
    • 1970-01-01
    • 2021-05-10
    • 2011-04-15
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    相关资源
    最近更新 更多