相关疑难解决方法(0)

将矩阵列与R中的向量元素相乘的最快方法

我有一个矩阵m和一个向量v.我想将第一列矩阵乘以m向量的第一个元素v,并将第二列矩阵乘以向量的第二m个元素v,依此类推.我可以使用以下代码完成它,但我正在寻找一种不需要两个转置调用的方法.我怎样才能在R中更快地做到这一点?

m <- matrix(rnorm(120000), ncol=6)
v <- c(1.5, 3.5, 4.5, 5.5, 6.5, 7.5)

system.time(t(t(m) * v))

#   user  system elapsed 
#   0.02    0.00    0.02 
Run Code Online (Sandbox Code Playgroud)

r

37
推荐指数
2
解决办法
2万
查看次数

将列向量乘以RcppArmadillo中的数字标量

c++使用RcppRcppArmadillo包编译这个简单的代码时遇到了一些麻烦.使用以下简单示例将矩阵的每列乘以数字标量:

code <- 'arma::mat out = Rcpp::as<arma::mat>(m);
for(int i = 0; i < out.n_cols; ++i){
  out.col(i) *= v;
}
return Rcpp::wrap( out );'
Run Code Online (Sandbox Code Playgroud)

试图使用...编译它

require( RcppArmadillo )
armMult <- cxxfunction( signature( m = "numeric" , v = "numeric" ),
                        code , plugin = "RcppArmadillo" )
Run Code Online (Sandbox Code Playgroud)

导致编译错误....

#error: no match for 'operator*=' in 'arma::Mat<eT>::col(arma::uword) [with eT = double, arma::uword = unsigned int](((unsigned int)i)) *= v'
Run Code Online (Sandbox Code Playgroud)

但是,如果我们交换numeric变量v2.0如下....

code <- 'arma::mat …
Run Code Online (Sandbox Code Playgroud)

r matrix armadillo rcpp

2
推荐指数
1
解决办法
3722
查看次数

标签 统计

r ×2

armadillo ×1

matrix ×1

rcpp ×1