2017-09-21 8 views
0

gamm推定の式をプログラムで作成しようとしていますが、後で光っているアプリで使ってみたいものです。私の目標は、この種の式を作成することです:y〜s(x、bs = "cs")。 私はカンマの後にパートを貼り付ける方法を知らないので、私は立ち往生しました:bs = "cs"。単一行で入力された複数のコマンドは、コードのご理解をいじり始める、それは通常、それらを壊すことは理にかなってのケースではガム用Rペースト式

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) 
+2

'input $ y_variable'の代わりに' input $ y'を使用してください。そして 'input $ x'と同じです。出力は 'hp〜s(mpg、bs =" cs ")'になります。 –

答えて

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) 

しかし、それは実際のことが判明私は一般的に文字を行くに対して助言する代わりに、式の作成に

0

問題は、あなたがinput$xinput$yを定義したということですが、あなたはinput$x_variableinput_y_variableを使用していましたこれのための経路。通常は、言語に計算すると良いでしょう:

input <- lapply(input, as.name) 
z <- eval(substitute(mgcv::gamm(y ~ s(x, bs = "cs"), data=mtcars), input)) 

これはinputからの名前の表現でxyを代入し、式を評価します。

+0

入力<-list() 入力$ y_variable < - "WT" 入力$ x_variable < - "MPG" 入力<-C(入力の$ y_variable、入力の$ x_variable) 入力< - lapply(入力、as.name (xs、bs = "cs")、data = mtcars)、input))。私はこれを試してみましたが、それは私にeval(predvars、data、env)エラーを与えました:オブジェクト 'y'が見つかりませんでした –

+0

まあ、 'eval(mgcv :: gamm(y_variable〜s(x_variable、bs =" cs ")、data = mtcars)、input))'となります。明らかに。 – Roland

+0

ありがとうございます。その点は明らかだった。ちょっと分かりにくいのは、入力$ x_variableと入力$ y_variableが光沢のあるアプリで反応的な値になっている場合、これにどのように取り組むかです。あなたがこのケースについてのコメントを追加することができれば幸いです。 –

関連する問題