在lapply中指定list元素的长度作为索引

时间:2013-06-12 14:27:33

标签: r list lapply

我正在使用lapply从列表中的向量中选择元素,但并非列表中的所有向量都包含相同数量的元素。我通常使用:

lapply(some.list,"[[",n)

是n是我试图解析的向量中元素的索引。但是,这次我的列表看起来更像是这样:

some.vect <- c("aaa_elem1","aa_elem2","elem3","bb_elem4","ccc_elem5","abc_elem6")
some.list <- strsplit(some.vect,"_")

当我使用普通的lapply方法时:

lapply(some.list,"[[",2)

我收到了以下错误:Error in FUN(X[[3L]], ...) : subscript out of bounds正如预期的那样,因为并非列表中的所有向量都有两个元素。我想要的是一种将lapply中的索引声明为向量的长度的方法。

我还尝试定义列表向量长度的向量,并将其分配给索引:

vect.length <- unlist(lapply(some.list,length))
lapply(some.list,"[[",vect.length)
(Error in FUN(X[[1L]], ...) : attempt to select more than one element)

并且根本没有分配索引:

lapply(some.list,"[[")
(Error in FUN(X[[1L]], ...) : no index specified)

有没有办法选择列表中向量的所有最后元素?

1 个答案:

答案 0 :(得分:3)

使用tail ...

lapply(some.list, tail , 1 )