使用R读取列表中的特定元素

时间:2015-02-02 19:36:59

标签: r list

我有以下列表:

v1<-c('hello', 'bye')
v2<-c(1,2,3)
v3<-c(5,6,5,5,5,5)
l<-list(v1, v2, v3)

我想阅读列表中每个成员的第二个元素。因此结果可能是:

 'bye' 2 6

我使用&#39; sapply&#39;与指示:

sapply(1:3, function(i){l[[i]][2])

它有效。但我想用更简单的指令来做,我试过

 l[[1:3]][2]

但它不起作用。这是获取列表中每个成员的第二个元素的更简单方法。

谢谢!

2 个答案:

答案 0 :(得分:0)

我建议

sapply(l,`[[`,2)
#[1] "bye" "2"   "6"

修改

请注意,此操作的结果是向量,因此必须将所有元素强制转换为相同的类型(在这种情况下,它是character)。如果您想保留结果组件的类型,则应使用

lapply(l,`[[`,2)

返回一个列表,R中列表的元素可以是不同的类型。 (感谢理查德对这方面的关注!)

答案 1 :(得分:0)

如果你想对它进行矢量化(避免*apply循环),你可以使用stringi::stri_list2matrix(但是,你会丢失你的课程)

library(stringi)
stri_list2matrix(l, byrow = TRUE)[, 2]
## [1] "bye" "2"   "6"