2012-08-25 162 views
48

我在R中列出了大约10,000个元素。说我想只选择元素,5,7和9.我不知道如果没有for循环,我会怎么做。从列表中选择多个元素

我想要做类似mylist[[c(5,7,9]]但这不起作用。我也尝试了lapply函数,但还没有能够得到那个工作。

+10

从'?“找到的文档[[”':*''''''''''''''''''''''''''选择一个元素* – A5C1D2H2I1M1N2O1R2T1

+0

除了@ mrdwab的评论,这是R的向量化世界,“单个元素”可能是一个向量! – seancarmody

回答

93

mylist[c(5,7,9)]应该这样做。

您希望将子列表作为结果列表的子列表返回;你不要使用[[]](或者更确切地说,函数是[[) - 因为Dason在评论中提到,[[抓住了元素。

+6

只需添加一些细节 - “[”将返回一个子列表,因此您可以使用多个输入。 “[[”实际上会抓取元素本身,所以它只能接受一个输入,因为它没有返回一个列表(除非元素本身是一个列表)。 – Dason

+0

这是矢量图吗?我有两个列表:'b'包含1000万个元素。 'filter_bins'是一个列表,其中每个元素都是一个索引。所以为了只从'b'得到具有相同索引的元素,我有 'lapply(filter_bins,function(x)b [x,])' 因此b [x,]只返回行的子集其中每个元素由filter_bins选择)。我希望这是有道理的。我的问题是,这是非常缓慢的 – masfenix

+0

@masfenix你应该产生一个新的问题来描述细节。 –