【问题标题】: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 的矢量化世界,“单个元素”可能是矢量!

标签: r list subset


【解决方案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 并使用[[ 迭代地抓取相应的元素。但是如果你想提取多个元素,那么你实际上是在抓取一个子列表,你应该只使用[
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-11
  • 2021-12-28
  • 2020-03-23
  • 2018-12-23
  • 2012-01-12
  • 1970-01-01
相关资源
最近更新 更多