Я пытаюсь использовать data.table, lapply и вызов функции для запуска нескольких регрессий для одной и той же переменной.Я хотел бы получить простую таблицу в качестве вывода, показывающую каждую переменную и коэффициент детерминации для каждой.
Я использую Rstudio 1.2.1335, data.table 1.12.2 Я использую набор данных "http://users.stat.ufl.edu/~rrandles/sta4210/Rclassnotes/data/textdatasets/KutnerData/Appendix%20C%20Data%20Sets/APPENC02.txt"
cnames<-c("ID","County","State","Area","Pop","Young","Old","Phys","Beds","Crime","HighSchool","BA","Poverty","Unemploy","PerCapitaIncome","TotalIncome","Region")
df62<-fread("APPENC02.txt", col.names=cnames)
df62[,c("ID", "County","State","Region"):=NULL]
variability<-function(y){
model<-eval(substitute(lm(Phys~y, data=df62)))
anova<-anova(model)
SSR<- anova$`Sum Sq`[1]
SSE<- anova$`Sum Sq`[2]
SSTO<-SSR+SSE
R2<-SSR/SSTO
return(R2)
}
df62[ , lapply(.SD, variability)]
Это работает, если последняя строка:
df62[ , lapply(.SD, Variability), by=Phys]
Сообщение об ошибке, когда я опускаю предложение «by»: «Ошибка в (функция (x,i, точный) if (is.matrix (i)) as.matrix (x) [[i]] else .subset2 (x,: объект 'i' не найден "
Если я группапо переменной Phys я получаю правильные результаты, но каждый результат повторяется без необходимости.