gamm的R粘贴公式
R paste formula for gamm
我正在尝试以编程方式创建 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)
如果在一行中输入多个命令开始扰乱您对代码的理解,将它们分解通常是有意义的:
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
我通常建议不要为此走角色路线。通常最好在语言上计算:
input <- lapply(input, as.name)
z <- eval(substitute(mgcv::gamm(y ~ s(x, bs = "cs"), data=mtcars), input))
这会将表达式中的 x
和 y
替换为 input
中的名称并对表达式求值。
我正在尝试以编程方式创建 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)
如果在一行中输入多个命令开始扰乱您对代码的理解,将它们分解通常是有意义的:
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
我通常建议不要为此走角色路线。通常最好在语言上计算:
input <- lapply(input, as.name)
z <- eval(substitute(mgcv::gamm(y ~ s(x, bs = "cs"), data=mtcars), input))
这会将表达式中的 x
和 y
替换为 input
中的名称并对表达式求值。