参数在函数外部起作用,但在R中的函数内部失败

问题描述 投票:1回答:1

[在函数外时,下面的参数pbkrtest.limit = nobs(m1)可以正常工作(因此,不生成消息)。

但是在foo()功能内部时,无法识别nobs(m1)(因此会生成一条消息)!我真的很想知道发生了什么事?

library(lme4)
library(emmeans)
dat <- read.csv('https://raw.githubusercontent.com/hkil/m/master/z.csv')

m1 <- lmer(y~ year*group + (1|stid), data = dat)

## WORKS FINE:
emtrends(m1, pairwise ~ group, var = "year", infer = c(T, T), pbkrtest.limit = nobs(m1)) 


## BUT NOW `nobs(m)` doesn't work inside the function:
foo <- function(m){

 emtrends(m, pairwise ~ group, var = "year", infer = c(T, T), pbkrtest.limit = nobs(m))
}

## RUN:
foo(m = m1)
r function methods eval s4
1个回答
1
投票

尝试在parent.frame中对其进行评估:

foo <- function(m, envir = parent.frame()) {
  s <- substitute(emtrends(m, pairwise ~ group, var = "year", infer = c(TRUE, TRUE), 
    pbkrtest.limit = nobs(m)))
  eval(s, envir)
}

foo(m = m1)

并将其报告给开发人员https://github.com/rvlenth/emmeans/issues

也使用TRUE而不是T,因为T可以被覆盖,但是TRUE不能。

© www.soinside.com 2019 - 2024. All rights reserved.