R 矩阵与矩阵数组的乘法
我有一个矩阵数组,R 矩阵与矩阵数组的乘法,r,arrays,matrix-multiplication,R,Arrays,Matrix Multiplication,我有一个矩阵数组,Z1,还有一个矩阵,Z2Z1,具有维度[25,2,4],Z2具有维度[2,10] 我想为I=1,2,3,4执行Z1[,I]%*%Z2。这是否可能使用应用扫描 我可以使用for循环来实现这一点,但我不想在这里这样做 建议数据的一个示例:Z1=array(1:200,dim=c(25,2,4)); Z2=array(1:20,dim=c(2,10))lapply(1:4,函数(i)Z1[,i]*%Z2)lapply和sapply(尽管在使用sapply之后必须进行一些重新排列)都是
Z1
,还有一个矩阵,Z2
Z1
,具有维度[25,2,4]
,Z2
具有维度[2,10]
我想为I=1,2,3,4
执行Z1[,I]%*%Z2
。这是否可能使用应用扫描
我可以使用for循环来实现这一点,但我不想在这里这样做
建议数据的一个示例:Z1=array(1:200,dim=c(25,2,4));
Z2=array(1:20,dim=c(2,10))
lapply(1:4,函数(i)Z1[,i]*%Z2)
lapply和sapply(尽管在使用sapply之后必须进行一些重新排列)都是选项。但是,它们本质上是为循环运行的包装器。是否有一种方法可以使用apply或sweep或其他不“执行for循环”的方法。出于好奇,您是否希望避免for循环(或for循环的包装器),因为它很慢?@bzki是的。我正在处理的数组和数据帧要大得多,我希望尽可能限制for循环的数量。这似乎是一个关于性能的问题,在这一点上,使用apply
不会获得太多好处。它同样只是一个美化的for循环
。不过,编译整体函数和中间函数可能会带来很大的提升(例如FUNlapply(1:4,函数(i)Z1[,i]*%Z2)
lapply和sapply(尽管在使用sapply之后,您必须进行一些重新排列)都是选项。但是,它们本质上是为循环运行的包装器。有没有一种方法可以使用apply或sweep或其他不“执行for循环”的方法。出于好奇,是否要避免使用for循环(或for循环的包装器)因为它很慢?@bzki是的。我正在处理的数组和数据帧要大得多,我希望尽可能限制for循环的数量。这似乎是一个关于性能的问题,在这一点上,使用apply
,您不会获得太多好处。它同样只是一个美化了的for循环
。编译over不过,所有的函数和中间函数可能会带来很大的提升(例如FUN