从列表中选择多个元素

Posted

技术标签:

【中文标题】从列表中选择多个元素【英文标题】:Select multiple elements from a list 【发布时间】:2012-08-20 14:03:25 【问题描述】:

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

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

【问题讨论】:

来自?"[[" 的文档:[[[$ 之间最重要的区别是 [ 可以选择多个元素,而其他两个选择一个元素。 对于@mrdwab 的评论,这是 R 的矢量化世界,“单个元素”可能是矢量! 【参考方案1】:

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

您希望子列表作为结果列表的子列表返回;你不使用[[]](或者更确切地说,函数是[[)——正如Dason在cmets中提到的那样,[[抓住了元素。

【讨论】:

只是为了添加更多细节-“[”将返回一个子列表,因此您可以使用多个输入是有意义的。 "[[" 实际上会抓取元素本身,因此它只能接受单个输入,因为它不返回列表(除非元素本身是列​​表)。 这是矢量化的吗?我有两个列表:b 包含 1000 万个元素。 filter_bins 是一个列表,其中每个元素都是一个索引。所以只从b 获取具有相同索引的元素,我有lapply(filter_bins, function(x) b[x, ]) 所以 b[x, ] 只返回行的子集(其中每个元素由 filter_bins 选择).. 我希望这是有道理的。我的问题是这很慢 @masfenix 你应该生成一个描述细节的新问题。 上述解决方案可以用 dplyr::select() 和 contains('some text") 之类的方法完成吗? @HermanToothrot 你没有。至少不是直接的。您可以对要提取的索引进行 lapply 或 sapply 并使用[[ 迭代地抓取相应的元素。但是如果你想提取多个元素,那么你实际上是在抓取一个子列表,你应该只使用[

以上是关于从列表中选择多个元素的主要内容,如果未能解决你的问题,请参考以下文章

从 Python 中的多个列表中仅选择一个唯一元素

访问列表的多个元素知道它们的索引

随机优先与权重——非平均概率的选择工具

从元素具有权重的列表中选择 k 个随机元素

如何从列表列表中选择元素的滑动窗口?

从python中的列表中选择某些元素