lapply为R中列表比较

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lapply为R中列表比较相关的知识,希望对你有一定的参考价值。

我的前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`
答案

你lapply语句是从第一个索引(1)m的最后一个索引去(L,在这种情况下)。所以,当你尝试调用m[[i+1]],你调用一个指标,是不是m的一部分。如果m具有长度为5,那么你的呼叫m[[5+1]],这是出界。

以上是关于lapply为R中列表比较的主要内容,如果未能解决你的问题,请参考以下文章

使用R语言将不同长度的向量合并为数据框

在列表中的多个数据帧上应用 lapply,R

如何使用lapply来计算r中列表中的唯一值

使用 R 中的 lapply() 对列表中的所有帧执行数据帧计算 [重复]

如何在 R 中使用 lapply 消除异常

将矩阵值计算为 R 中列表中所有成对比较的平均值