从列表中选择多个元素


82

我在R中有一个大约10,000个元素的列表。假设我只选择元素5、7和9。我不确定如果没有for循环该怎么做。

我想做类似的事情,mylist[[c(5,7,9]]但这不起作用。我也尝试过该lapply功能,但也无法使其正常工作。


17
从文档中发现的?"[["之间最重要的区别[[[$在于[可以选择一个以上的元素,而另外两个选择单个元素。
2012年

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

Answers:


135

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

您希望将子列表作为结果列表的子列表返回;您无需为此使用[[]](或更确切地说,函数是[[),正如Dason在评论中提到的那样,它可以[[抓取元素。


8
只是增加一些细节-“ [”将返回一个子列表,因此可以在其中使用多个输入很有意义。“ [[”实际上将抓取元素本身,因此只能返回一个输入,因为它不返回列表(除非元素本身是列​​表)。
戴森2012年

这是矢量化的吗?我有两个列表:b包含1000万个元素。filter_bins是每个元素都是索引的列表。因此,为了只从b具有相同索引的元素中获取数据,我将 lapply(filter_bins, function(x) b[x, ]) b [x,]仅返回行的子集(其中每个元素由filter_bins选择)。我的问题是,这非常慢
masfenix 2014年

@masfenix,您应该生成一个描述详细信息的新问题。
Glen_b 2014年

可以使用dplyr :: select()和contains('some text“)之类的方法完成上述解决方案吗?
2016年

3
@HermanToothrot你不知道。至少不是直接。您可以对要提取的索引套用或套用,并使用来迭代地获取相应的元素[[。但是,如果您想提取多个元素,那么实际上您是在抓取一个子列表,您应该使用[
Dason
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.