【发布时间】:2014-05-14 09:58:59
【问题描述】:
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
【问题讨论】:
-
您似乎来自 C++ 背景,因此是“循环”思维方式。 R 是一种矢量化语言,您通常可以避免循环,除非每个条目都提供不同的条件。尽管 Rcpp 包中的 C++ 用户有一个解决方法。看看here
-
@DavidArenburg 你是对的:)。但是我尝试了 * 和 %*%。当 a_ 有一列时,运算符 * 起作用。
-
*和%*%是不同的东西。第一个只是将第一个向量的每个元素与第二个向量中的相应元素相乘,而后者是矩阵乘法