【发布时间】:2018-08-03 13:43:48
【问题描述】:
假设我们有以下列表,其中包含一些矩阵(可能很多,但为简单起见,我现在放两个)
> rel$E
i j value
[1,] "3" "5" "0.070711136732969"
[2,] "3" "6" "0.0555555555555557"
[3,] "1" "3" "0.0178395371187627"
[4,] "1" "2" "0.00488002262797937"
[5,] "2" "5" "0.0272189957856598"
[6,] "3" "4" "0.0438244348035453"
[7,] "2" "4" "0.0128664170608579"
[8,] "3" "3" "0"
[9,] "2" "3" "0.0167431138932832"
[10,] "2" "2" "0"
[11,] "4" "5" "0.0180208592355387"
[12,] "2" "6" "0.028063474878704"
[13,] "1" "5" "0.00937210021651717"
[14,] "1" "4" "0.0033698603568658"
> rel$D
i j value
[1,] "1" "3" "0.0398765637816322"
[2,] "1" "1" "0"
[3,] "1" "4" "0.00452411512576561"
[4,] "3" "4" "0.0193536780493677"
[5,] "1" "2" "0.00289466496926153"
[6,] "2" "5" "0.0283053038069326"
[7,] "3" "3" "0"
[8,] "3" "6" "0.0862179235688977"
[9,] "1" "5" "0.0242662144621697"
[10,] "1" "6" "0.00584795321637427"
[11,] "4" "5" "0.0174208488656519"
[12,] "2" "3" "0.0443079152300233"
[13,] "2" "2" "0"
[14,] "2" "4" "0.0131264776661371"
[15,] "3" "5" "0.0952553775375157"
总而言之,我想要实现的是矩阵的所有values 列具有相同的i 和j。
例如对于i=3、j=5,总和应该是0.070711136732969 + 0.0952553775375157。
但是正如您所见,有一些对存在于一个矩阵中,但不存在于另一个矩阵中。
对于这种情况i=1、j=6,总和应该是0 + 0.00584795321637427,因为这对不存在于第一个矩阵中。
是否有任何有效的(lapply,apply)方法来生成具有列i, j, sum 的最终矩阵?但是不使用很多 for 循环?我尝试使用 for 循环来处理它,但最终代码变得难以阅读和更改。
【问题讨论】:
-
aggregate()是你的朋友。 stackoverflow.com/questions/3505701/…您的数据似乎是一个矩阵-因此您最终必须强制转换为数据框。