2017-09-21 10 views
0

gamm 추정을위한 수식을 프로그래밍 방식으로 만들려고합니다. 나중에 giny 추정에 사용하기 위해 나중에 반짝이는 응용 프로그램에서 사용하고 싶습니다. 내 목표는이 종류의 수식을 만드는 것입니다. y ~ s (x, bs = "cs"). 쉼표 뒤에 부품을 붙여 넣는 방법을 모르기 때문에 나는 붙어 있습니다 : bs = "cs". 여러 명령 코드의 이해와 장난을 시작 한 줄에 입력 한 경우gamm에 대한 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) 

, 그것은 실제 밝혀 문제는 당신이 input$xinput$y을 정의했다고하지만, 수식 작성에 input$x_variableinput_y_variable을 사용하고 대신

는 는
0

나는 일반적으로 문자를 예정에 대해 조언 이것을위한 경로. 보통은 언어에 계산하는 것이 좋습니다 :

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

input의 이름으로 식 xy을 대체하고 표현식을 평가합니다.

+0

입력 <-list() 입력 $ y_variable "-"중량 " 입력 $ x_variable"- "MPG" 입력 <-C (입력 $의 y_variable 입력 $의 x_variable) 입력 <- lapply (입력 as.name) z <- eval (대체 (mgcv :: gamm (y ~ s (x, bs = "cs"), 데이터 = mtcars), 입력)). 나는 이것을 시도했지만 그것은 단지 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 입력이 반짝이는 앱의 반응 값이라면 어떻게 처리해야하는지입니다. 이 사건에 대한 의견을 추가 할 수 있다면 좋을 것입니다. –