我想用固定向量划分矩阵的每个 row . 例如
mat<-matrix(1,ncol=2,nrow=2,TRUE)
dev<-c(5,10)
给 mat/dev
将每个 column 除以 dev
.
[,1] [,2]
[1,] 0.2 0.2
[2,] 0.1 0.1
但是,我希望得到这个结果,即执行操作 row-wise :
rbind(mat[1,]/dev, mat[2,]/dev)
[,1] [,2]
[1,] 0.2 0.1
[2,] 0.2 0.1
到那儿有明确的命令吗?
2 回答
以下是增加代码长度的几种方法:
数据框
如果
mat
是数据帧并且产生数据帧结果,则以mat /
开头的所有解决方案也可以工作 .sweep
解决方案和最后一个解决方案(即mat2
)的情况也是如此 .mapply
解决方案适用于data.frames但生成矩阵 .矢量
如果
mat
是普通矢量而不是矩阵,则其中任何一个都返回一个列矩阵这一个返回一个向量:
其他人给出错误,警告或不是所需的答案 .
基准
代码的简洁和清晰可能比速度更重要,但为了完整性,这里有一些使用10次重复然后100次重复的基准 .
赠送:
重新运行所有那些花费<20毫秒,重复100次的测试:
赠送:
所以在这两个测试中#2(使用
diag
)是最快的 . 原因可能在于它几乎直接诉诸于BLAS,而#1依赖于成本较高的t
.您正在寻找应用于行的
apply
函数: