для сравнения списка в R - PullRequest
0 голосов
/ 06 февраля 2019

Мои первые 3 строки кода R ниже работают нормально.Но когда я превращаю эти 3 строки в функцию, я получаю Error in m[[i + 1]] : subscript out of bounds.

Можно ли это исправить?

m1 <- lm(hp ~ vs, mtcars)
m2 <- lm(hp ~ vs*wt, mtcars)

pchisq(2 * (logLik(m2) - logLik(m1)), df = abs(m1$df.residual - m2$df.residual), lower = F)

###### Make a function of above 3 lines: ######

 compare <- function(...){

   m <- list(...)
   L <- length(m)

lapply(1:L, function(i) pchisq(2 * (logLik(m[[i+1]]) - logLik(m[[i]])), df = abs(m[[i]]$df.residual - m[[i+1]]$df.residual), lower = F) )
 }
 ## Example of use:
  compare(m1, m2)       # `Error in m[[i + 1]] : subscript out of bounds`

1 Ответ

0 голосов
/ 06 февраля 2019

Ваш оператор lapply идет от первого индекса (1) до последнего индекса m (в данном случае L).Итак, когда вы пытаетесь вызвать m[[i+1]], вы вызываете индекс, который не является частью m.Если m имеет длину 5, то вы звоните m[[5+1]], что выходит за пределы.

...