【问题标题】:How can I subset a large array based on a list?如何根据列表对大型数组进行子集化?
【发布时间】:2018-03-10 17:53:16
【问题描述】:

我有一个large array of 150000 elements

structure(c(0.297737591051841, 0.29315072190034, 0.300524437089258, 
0.297581868890772, 0.29315252160195, 0.30052371791622, 0.297447088491222, 
0.293154289987493, 0.300522998984405, 0.297331962830338), .Dim = 10L)

我有一个索引列表:

List of 3

int[1:8784(1d)] 1 4 7 10 13
num[1:8784(1d)] 2 5 8 11 14
num[1:8784(1d)] 3 6 9 12 15

如何根据列表对数组进行子集化?

到目前为止,我在列出之前使用索引来一一完成:

data.frame(array[list1], array[list2], array[list3])

有什么更聪明的方法来做到这一点?

【问题讨论】:

  • @akrun 完成。这是一个一维数组。
  • @akrun 我认为它正在连接数字?
  • 我猜你有一个包含 3 个向量作为索引的列表,对吧?
  • 是的。但我认为你的答案有效。让我检查一下。
  • 完美。那行得通。谢谢!

标签: arrays r loops apply


【解决方案1】:

我们可以的

as.data.frame(sapply(lst, function(x) ar1[x]))

Map

data.frame(Map(`[`, list(ar1), lst))

编辑:从mapply 更改为Map(基于@thelatemail 的cmets)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 2019-11-08
    • 2013-08-15
    • 2022-11-18
    • 1970-01-01
    • 2016-01-14
    • 2013-04-22
    相关资源
    最近更新 更多