小编Øys*_*n S的帖子

为什么它不会导致 gamm4 使用 mgcv 的内部函数的警告?

我对阅读gamm4包的源代码时注意到的一个事实感到困惑。

\n

它在两个地方从mgcv导入内部函数。

\n

一处位于函数中(此处gamm4.setup链接到代码)

\n
  G <- mgcv:::gam.setup(formula,pterms,\n                 data=data,knots=knots,sp=NULL,\n                 min.sp=NULL,H=NULL,absorb.cons=TRUE,sparse.cons=0,gamm.call=TRUE)\n
Run Code Online (Sandbox Code Playgroud)\n

另一个地方是 gamm4 函数(此处链接到代码):

\n
  var.summary <- mgcv:::variable.summary(gp$pf,dl,nrow(mf)) ## summarize the input data\n
Run Code Online (Sandbox Code Playgroud)\n

在描述文件中,它在“取决于”下列出了 mgcv(在此处链接到完整的描述文件):

\n
Depends: R (>= 2.9.0), methods, Matrix, lme4 (>= 1.0), mgcv (>= 1.7-23)\n
Run Code Online (Sandbox Code Playgroud)\n

此外,在 NAMESPACE 中它导入了 mgcv,尽管我认为这与我的问题无关。此处链接到命名空间。

\n

如果我在正在开发的包中执行完全相同的操作,则使用另一个包中的内部函数会导致警告,并留下以下警告R CMD check

\n
\xe2\x9d\xaf checking dependencies in R code ... WARNING\n  Unexported objects imported by \':::\' calls:\n    \xe2\x80\x98mgcv:::gam.setup\xe2\x80\x99 \xe2\x80\x98mgcv:::variable.summary\xe2\x80\x99\n …
Run Code Online (Sandbox Code Playgroud)

r mgcv

8
推荐指数
1
解决办法
235
查看次数

dplyr总结两次评估自定义函数?

我正在使用dplyr group_bysummarise使用自定义聚合函数,并观察到一个奇怪的行为.看起来每个组的聚合函数评估两次.

这是一个最小的例子:

aggFun <- function(x) { print("Inside function"); print(rnorm(1)); sum(x)}
df <- data.frame(key = rep("a", 3), val = 1:3)
df %>% group_by(key) %>% summarise(sum = aggFun(val))
Run Code Online (Sandbox Code Playgroud)

输出如下:

[1] "Inside function"
[1] 0.3230769
[1] "Inside function"
[1] -0.3347653
# A tibble: 1 × 2
   key   sum
<fctr> <int>
1      a     6
Run Code Online (Sandbox Code Playgroud)

既然只有一个组,那么该函数不应只评估一次吗?我在大型应用程序中遇到同样的事情,并担心这可能对性能有害,或者我错过了什么?

通过升级到GitHub版本解决.

r dplyr

5
推荐指数
0
解决办法
214
查看次数

标签 统计

r ×2

dplyr ×1

mgcv ×1