适用于R中的列表比较

时间:2019-02-05 21:22:55

标签: r function lapply

我下面的前3行R代码可以正常工作。但是,当我将这三行变成一个函数时,我得到了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 :(得分:0)

您的lapply语句从第一个索引(1)到m的最后一个索引(在这种情况下为L)。因此,当您尝试调用m[[i+1]]时,您正在调用的索引不属于m。如果m的长度为5,则您将呼叫m[[5+1]],这是超出范围的。