【问题标题】:Select same elements matrix in R在R中选择相同的元素矩阵
【发布时间】:2014-12-31 14:08:34
【问题描述】:

我想尽快选择 5 个元素,而不是 25 个。在大向量上运行需要很长时间:

a = c(1,2,5,2,3)
b = c(2,4,1,4,5)
d = matrix(1:25,nrow=5,ncol=5)

result = array(NA,dim=length(a))

for (i in 1:length(a)) { result[i] = d[a[i],b[i]] }

OR(更慢)

result<-sapply(1:length(a), function(x)  d[a[x],b[x]] )

【问题讨论】:

  • 你能澄清你的第一句话select 5 elements, no 25。我不明白这是什么意思

标签: arrays r select vector


【解决方案1】:

只需使用矩阵索引:

d[cbind(a, b)]
# [1]  6 17  5 17 23

有关详细信息,请参阅?Extract,您将在其中找到以下几行:

第三种索引形式是通过数字矩阵,每个维度有一列:索引矩阵的每一行然后选择数组的单个元素,结果是一个向量。

在同一帮助页面的“示例”部分中也有一些示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多