【问题标题】:How does dplyr::n function work?dplyr::n 函数是如何工作的?
【发布时间】:2016-12-30 13:28:03
【问题描述】:

我很好奇 dplyr 中的函数 n 是如何编程的。在 dplyr 环境中评估 n 时,我得到的只是:

function () 
{
    stop("This function should not be called directly")
}
<environment: namespace:dplyr>

也许这是一个愚蠢的问题,但是,它是在哪里定义的?在其他一些函数中调用它是如何工作的?它隐藏在哪个环境中?

感谢您的帮助

【问题讨论】:

  • 好问题。 The actual n() function 很容易找到,但它不能解释为什么 n()mutatefiltersummarise 中有效。可以在 C 代码中吗?
  • 可能是this帮助

标签: r dplyr


【解决方案1】:

据我了解,dplyr 使用混合评估。这意味着它将评估 C++ 中表达式的某些部分和 R 中的其他部分。n() 是始终由 C++ 处理的函数之一。这就是为什么该函数不直接在 R 中执行任何操作,除了返回错误之外,因为该函数从未被 R 评估。

相关C++代码可以在on github找到。

【讨论】:

  • 不错!有趣的函数...实际上,哈德利(或任何人)用 R 中的错​​误编写了这个函数是很有教育意义的,否则我就不会学了!
猜你喜欢
  • 2017-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
  • 2021-03-30
  • 2020-07-18
  • 2015-11-08
  • 2017-05-21
相关资源
最近更新 更多