我试图获取R中列表的每个子元素的 last 元素的值。列表的元素是不同长度的向量,因此最后一个子元素的索引不是列表元素之间的常量。我搜索了SO,但只找到了那些想要获得的信息,例如,每个元素的第二个子元素。这对我没有帮助,因为列表的元素是非常长的。
我只对不涉及使用for循环的解决方案感兴趣,因为我的列表长度为> 100万。
谢谢!
答案 0 :(得分:9)
您可以使用lapply
和tail
:
x <- list(a=1:5, b = 1:10, d = 9:11)
last_elems <- lapply(x, tail, n = 1L)
正如Hadd E. Nuff所指出的,为了获得数字向量而不是单元素列表,vapply
是一个不错的选择:
last_elems <- vapply(x, tail, n = 1L, FUN.VALUE = numeric(1))
答案 1 :(得分:0)
使用 purrr::map2:
library(purrr)
x <- list(a = 1:5, b = 1:10, d = 9:11)
map2(x, lengths(x), pluck)
# $a
# [1] 5
#
# $b
# [1] 10
#
# $d
# [1] 11