gpt4 book ai didi

r - 如何使用字符作为函数的属性

转载 作者:行者123 更新时间:2023-12-03 18:23:46 25 4
gpt4 key购买 nike

我想对模型的不同变量进行多重比较分析。我的想法如下:

library(multcomp)
set.seed(123)
x1 <- gl(4,10)
x2 <- gl(5,2,40)
y <- rnorm(40)

fm1 <- lm(y ~ x1 + x2)

for(var in c('x1', 'x2'))
{
mc1 <- glht(fm1, linfct=mcp(var='Tukey'))
print(summary(mc1))
}

当我运行时,出现以下错误:
Error en mcp2matrix(model, linfct = linfct) : 
Variable(s) ‘var’ have been specified in ‘linfct’ but cannot be found in ‘model’!

也就是说,不能使用字符来指定 mcp 函数的属性。
有谁知道解决方案?

最佳答案

通常最好避免使用表示代码的字符串 - 它可以防止难以调试的错误,并且在美学上更加优雅。如果你使用 do.call,这个问题很容易解决。和 setNames功能:

var <- "x1"
cmp <- do.call(mcp, setNames(list("Tukey"), var))
glht(fm1, linfct = cmp)

您不能使用 substitute在这里是因为它不允许您修改函数参数的名称。我对为什么这是合理的有一些直觉,但不足以解释它:/

如果您是包作者,最好提供使用不寻常语法的函数的替代版本,以便可以通过编程方式访问它们,而无需跳槽。

关于r - 如何使用字符作为函数的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8448757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com