如何在列表中获取具有相同名称的元素以避免 R 中的 for 循环

how to get an element with same name in a list to avoid for loop in R

我有一个简单的问题。假设我有一个长度为 500

的列表 Obj
Obj[[1]], Obj[[2]], ....Obj[[500]], #for each Obj[[i]], it has an element 
Obj[[i]]$logL, 

我的问题是如何提取每个 Obj 的 logL 以避免这样的 for 循环?

logL = rep(NA, length(Obj))
for(i in 1: length(Obj)){
   logL[i] = Obj[[i]]$logL
}

有没有什么办法可以用 sapply 或一些像 plyr 这样的高级软件包来做到这一点?我对解决方案持开放态度,只要它比 for 循环更快,因为我需要在 MCMC 中执行此操作,并且列表的长度可以是 3000,所以我更喜欢一些快速的方法。

提前致谢!

您可以为此目的使用应用函数组。这是一个教程 http://www.r-bloggers.com/using-apply-sapply-lapply-in-r/

sapply(obj, function(x) x$logL )

如果你只是想把它做成一个向量,这个应该可以。无需申请。

unlist(Obj)