【问题标题】:How to use order_by with first()?如何将 order_by 与 first() 一起使用?
【发布时间】:2016-12-30 23:15:54
【问题描述】:

当我用order_by 运行first(...) 的简单版本时,我的R 崩溃了。比如下面的

library(dplyr)
summarize(group_by(mtcars, cyl), bigmpg = last(mpg, order_by = wt))

我的 R 崩溃了。

这是一个错误(可能与 dplyr issue #626 有关)还是其他问题?

我在 Windows 10 上运行 R 版本 3.3.1 (x86_64-w64-mingw32/x64) 和 dplyr 版本 0.5.0。

【问题讨论】:

  • 对我来说很好,但如果你要使用 dplyr,你应该真的使用管道;这完全不可读。
  • @alistaire 有趣。您正在运行哪个版本的 R 和 dyplyr? (顺便说一句,我同意你关于管道的看法。我从 dplyr 问题中按原样复制了 sn-p。)
  • 同理。在 OS X 上,如果重要的话。
  • 如果它是可重现的,这听起来像是一个错误;如果没有类似的公开报告,我会在 GitHub 上提交报告。
  • @alistaire 事实证明,实际上可能存在类似的错误(github.com/hadley/dplyr/issues/2081);错误中的示例也在我的机器上崩溃了。

标签: r dplyr


【解决方案1】:

尝试限定 dplyr 函数。

library(magrittr)
requireNamespace("dplyr")

dplyr::data_frame(id = 1:9, value = 42) %>%
  dplyr::summarise(
    dplyr::first(value, order_by = id)
  )

这个变通办法避免了我的崩溃。您的示例在我的 Red Hat 6.7、Ubuntu 14.04、Windows 7 和 Windows 8 机器(R 3.3.1;dplyr 0.5.0)上崩溃。

【讨论】:

  • 这也适用于我。我可以将其缩短为library(dplyr),然后是data_frame(id = 1:9, value = 42) %>% summarise(dplyr::first(value, order_by = id))(所以似乎只有first(...) 需要资格)。谢谢!
  • 我会接受这个(因为它实际上解决了问题!)虽然我感谢技术上我的问题的答案是它是一个错误。
猜你喜欢
  • 1970-01-01
  • 2017-09-02
  • 2014-09-28
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
相关资源
最近更新 更多