如何在列表中获取具有相同名称的元素以避免 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)
我有一个简单的问题。假设我有一个长度为 500
的列表 ObjObj[[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)