Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:我能用一些指数矩阵乘法吗?_R_Matrix_Matrix Multiplication_Exponential - Fatal编程技术网

R:我能用一些指数矩阵乘法吗?

R:我能用一些指数矩阵乘法吗?,r,matrix,matrix-multiplication,exponential,R,Matrix,Matrix Multiplication,Exponential,我有尺寸为5000x250的数据矩阵(X)加上额外的参数Y(尺寸:5000x1)。下面的循环为我提供了所需的结果,但计算起来需要花费很长时间 for (i in 1:ncol(X)) for (j in 1:nrow(X)) { X[j,i]=Y[j,1]^X[j,i] } 有没有办法优化这个?如果我不需要指数,我会使用矩阵乘法。谢谢 如果您构造了一个大小正确的y矩阵,则可以使用矢量化的^: x <- matrix(1:9,3) y <- matrix(1:3

我有尺寸为5000x250的数据矩阵(X)加上额外的参数Y(尺寸:5000x1)。下面的循环为我提供了所需的结果,但计算起来需要花费很长时间

for (i in 1:ncol(X))
  for (j in 1:nrow(X))
   {
   X[j,i]=Y[j,1]^X[j,i]
   }

有没有办法优化这个?如果我不需要指数,我会使用矩阵乘法。谢谢

如果您构造了一个大小正确的y矩阵,则可以使用矢量化的
^

x <- matrix(1:9,3)
y <- matrix(1:3,ncol=1)

do.call(cbind,replicate(ncol(x),list(y)))^x
     [,1] [,2]  [,3]
[1,]    1    1     1
[2,]    4   32   256
[3,]   27  729 19683

x如果您构建了一个大小正确的y矩阵,则可以使用向量化的
^

x <- matrix(1:9,3)
y <- matrix(1:3,ncol=1)

do.call(cbind,replicate(ncol(x),list(y)))^x
     [,1] [,2]  [,3]
[1,]    1    1     1
[2,]    4   32   256
[3,]   27  729 19683

x将列向量
y
转换为矩阵,并使用elementwise
^

matrix(y, nrow=nrow(X), ncol=ncol(X)) ^ X


将列向量
y
转换为矩阵,并使用elementwise
^

matrix(y, nrow=nrow(X), ncol=ncol(X)) ^ X


X[…]是积分类型(指数之前)?
X^Y
不起作用吗?如果没有,请尝试
X^as.numeric(Y)
,向量回收应确保您得到所需的值。X可以在指数化之前取0、1或2。@James:我不确定您的建议是什么。X[]必须是指数。@aciM Oops,误读了Q。在这种情况下,您需要将Y加在一起。我将发布一个答案是X[…]一个整数类型(在指数之前)?
X^Y
不起作用吗?如果没有,请尝试
X^as.numeric(Y)
,向量回收应确保您得到所需的值。X可以在指数化之前取0、1或2。@James:我不确定您的建议是什么。X[]必须是指数。@aciM Oops,误读了Q。在这种情况下,您需要将Y加在一起。我会发布一个答案