【发布时间】:2020-07-04 20:01:29
【问题描述】:
给定一个非方阵a 我需要从每一行中减去它自己的最大值。矩阵包含NAs,将被丢弃。矩阵的维度是预先知道的并且是固定的。此外,所有NAs 都在主对角线下方,如果此信息有帮助,即a 具有以下形式
a11 a12 a13 a14 ...
NA a22 a23 a24 ...
NA NA a33 a34 ...
...
目前我正在使用
a <- a - apply(a,1,function(x){max(x, na.rm=TRUE)})
(顺便说一下,它比t(apply(a,1,function(x){x-max(x, na.rm=TRUE)})) 快)。
我想知道是否有更快的解决方案,因为这个操作必须重复很多次。
在 Stackoverflow 中,我找到了类似问题的答案,建议使用 pmax,但这需要将矩阵转换为列表,这会比我的解决方案慢得多,我相信。一些答案建议使用dplyr 中的rowwise,但这似乎需要先将矩阵转换为数据框。
感谢您的建议!
【问题讨论】:
标签: r matrix max vectorization