问题 r中的元素乘法乘法


是否有内置函数或运算符在R中执行以下操作:

ElementwiseMultiply <- function ( a_, b_ )
{
c_ = a_ ;
for ( i in 1:ncol(a_) )
{
    c_[,i] = ( a_[,i] * b_ ) ;
}
return ( c_ );
}

例如

> a_
     [,1] [,2]
[1,]    1    4
[2,]    2    3
[3,]    3    2
> b_
     [,1]
[1,]    2
[2,]   -1
[3,]    1
> ElementwiseMultiply ( a_, b_ )
     [,1] [,2]
[1,]    2    8
[2,]   -2   -3
[3,]    3    2

6134
2018-05-14 09:58


起源

看起来你是来自C ++背景,因此是“循环”的思维方式。 R是一个矢量化语言,你通常可以避免循环unlseed每个条目提供不同的条件。但是对于Rcpp包中的C ++用户,有一种解决方法。看一看 这里 - David Arenburg
@DavidArenburg你是对的:)。但是我尝试了*和%*%。当a_有一列时,运算符*工作。 - Humble Debugger
* 和 %*% 是不同的事情。第一个是将第一个矢量的每个元素乘以第二个中的相应元素,而后者是矩阵乘法 - David Arenburg


答案:


是的,正常乘法 b_ 作为矢量:

a_*as.vector(b_)
     [,1] [,2]
[1,]    2    8
[2,]   -2   -3
[3,]    3    2

14
2018-05-14 10:03