我正在尝试以编程方式为gamm估计创建公式,我希望稍后在一个闪亮的应用程序中使用它。我的目标是创建一个这样的公式:y~s(x,bs =" cs")。 我卡住了,因为我不知道如何在逗号之后粘贴部分:bs =" cs"。
input<-list()
input$x<-"mpg"
input$y<- "hp"
formula<-as.formula(paste(input$y_variable," ~ ",paste(paste("s(",paste(input$x_variable,collapse="+")),', bs="cs")')))
z <- mgcv::gamm(formula, data=mtcars)
答案 0 :(得分:1)
如果在一行中输入多个命令开始弄乱您对代码的理解,通常有必要将其分解:
dep_vars <- paste0(input$x, collapse = "+")
after_tilde <- paste0("s(", dep_vars, ", bs = 'cs')")
dyn_string <- paste0(input$y, " ~ ", after_tilde)
mgcv::gamm(as.formula(dyn_string), data=mtcars)
但事实证明,实际问题是您定义了input$x
和input$y
,但您在公式创建中使用了input$x_variable
和input_y_variable
答案 1 :(得分:0)
我通常建议不要为此选择角色路线。通常情况下,计算语言会更好:
input <- lapply(input, as.name)
z <- eval(substitute(mgcv::gamm(y ~ s(x, bs = "cs"), data=mtcars), input))
这将使用x
中的名称替换表达式中的y
和input
并计算表达式。