Я пытаюсь создать формулу для дерева смешанных линейных моделей (glmertree).
X<-data.frame(matrix(runif(100*5),100,5))
y<-rnorm(X[,1]+X[,2],1)
site<-rep(1:2,c(50,50))
X<-data.frame(y,site,X)
Для rpart это будет работать
library(rpart)
f1<-formula(paste(names(X)[1],paste(names(X)[-c(1:2)] ,
collapse=" + "),sep=" ~ "))
rpart(f1,data=X)
, но для glmertree, у которого есть формулав трех частях это не работает.
lt <- lmertree(y~ 0| site | paste(names(X)[-c(1:2)],collapse=" + "),data=X)
Error in model.frame.default(terms(formula, lhs = lhs, rhs = rhs,
data = data, : variable lengths differ (found for 'paste(names(X)[
lt <- lmertree(y~ 0| site | formula(paste(names(X)[-c(1:2)],collapse=" + ")),data=X)
Error in eval(parse(text = x, keep.source = FALSE)[[1L]]) :
object 'X1' not found
Это будет работать
lt <- lmertree(y~ 0| site | X1 + X2 + X3 + X4 + X5 ,data=X)
однако в реальных данных у меня будут тысячи переменных.