如何在R中根据另一个数组的信息在数组中添加元素?[重复]

问题描述 投票:0回答:1

我有一个数组,在这个数组中,我需要根据元素所属的索引将它们加在一起。

row_index <- c(1, 3, 1, 2, 2, 3, 3, 4)
array <- c(1.2, 3.4, 5.6, 7.2, 0.3, 5.6, 2.0, 3.1)

因此,在这种情况下,我想将所有属于第一行的元素按照以下方式添加到一起 row_index 一起。例如: 1.25.6 将被加在一起,因为它们对应的是同一行,基于 row_index同样,对于第2行,它将是 7.2 + 0.3. 所以我的结果数组会是。

result = (6.8 , 7.5 , 11.0 , 3.1)

对于上下文,我有一个稀疏矩阵,访问每个非零元素属于哪一行是非常容易和有效的,而且长度为 row_index 将永远与 array.

r arrays sparse-matrix memory-efficient
1个回答
2
投票

一种选择是 tapplybase R 其中,分组是基于 "row_index "的。

unname(tapply(array, row_index, FUN = sum))
#[1]  6.8  7.5 11.0  3.1

或者另一个是 by

by(array, row_index, FUN = sum)

或与 rowsum

unname(rowsum(array, row_index)[,1])
#[1]  6.8  7.5 11.0  3.1

或与 xtabs

xtabs(array ~ row_index)

注:以上解决方案均来自 base R

© www.soinside.com 2019 - 2024. All rights reserved.