r中用户定义函数内的lme

r中用户定义函数内的lme,r,mixed-models,R,Mixed Models,我需要在我的代码中多次使用混合模型lme函数。但我不知道如何在函数中使用它。如果使用其他方式,lme函数工作正常,但在函数中使用时,会抛出错误: myfunc<- function(cc, x, y, z) { model <- lme(fixed = x ~1 , random = ~ 1|y/z, data=cc, method="REML") } myfunc不确定您是否正在查找此项,您可以尝试使用此项,正如@akrun所正确指出的,您可以使用粘贴,

我需要在我的代码中多次使用混合模型lme函数。但我不知道如何在函数中使用它。如果使用其他方式,lme函数工作正常,但在函数中使用时,会抛出错误:

myfunc<- function(cc, x, y, z)
{

    model <- lme(fixed = x ~1 , random = ~ 1|y/z,
    data=cc,
    method="REML")
}

myfunc不确定您是否正在查找此项,您可以尝试使用此项,正如@akrun所正确指出的,您可以使用粘贴,我使用的是粘贴0。但是(粘贴的特殊情况),粘贴连接两个字符串:

这里的想法是将变量名与公式连接起来,但由于paste将其转换为字符串,因此不能将其作为公式引用以构建模型,因此需要使用围绕paste0语句的
as.formula
将该字符串转换为公式

要理解上述内容,请尝试使用“粘贴”编写如下公式:

formula <-paste0("mpg~", paste0("hp","+", "am"))
print(formula)
[1] "mpg~hp+am"
class(formula)
[1] "character" ##This should ideally be a formula rather than character
formula <- as.formula(formula) ##conversion of character string to formula
class(formula)
[1] "formula"

您可以通过在控制台中键入
?paste
来阅读有关粘贴的更多信息。

您需要使用
paste
创建一个公式。您能帮助我了解如何使用粘贴功能吗?这很有效!不能告诉你我有多感激你。非常感谢你。
library("nlme")
myfunc<- function(cc, x, y, z)
{

model <- lme(fixed = as.formula(paste0(x," ~1")) , random = as.formula(paste0("~", "1|",y,"/",z)),
               data=cc,
               method="REML")
}
models <- myfunc(cc=mtcars, x="hp", y="mpg", z="am")

summary(models)