我正在使用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)
有没有办法选择列表中向量的所有最后元素?
答案 0 :(得分:3)
使用tail
...
lapply(some.list, tail , 1 )