如何获取R中列表的每个元素的最后一个子元素

时间:2016-03-21 22:52:32

标签: r list

我试图获取R中列表的每个子元素的 last 元素的值。列表的元素是不同长度的向量,因此最后一个子元素的索引不是列表元素之间的常量。我搜索了SO,但只找到了那些想要获得的信息,例如,每个元素的第二个子元素。这对我没有帮助,因为列表的元素是非常长的。

我只对不涉及使用for循环的解决方案感兴趣,因为我的列表长度为> 100万。

谢谢!

2 个答案:

答案 0 :(得分:9)

您可以使用lapplytail

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