R tibble中的矩阵乘法

R tibble中的矩阵乘法,r,dplyr,purrr,R,Dplyr,Purrr,我有一个关于如何在tibble中进行矩阵乘法的具体问题 示例代码为: 假设我有一个tibleW,其尺寸为:100×10: W <- as_tibble( x=matrix( rnorm(1000,0,2) ,nrow=100,ncol=10,dimnames = list(NULL,c("C1","C2","C3","C4","C5","C6","C7"

我有一个关于如何在tibble中进行矩阵乘法的具体问题

示例代码为:

假设我有一个tible
W
,其尺寸为:
100×10

W <- as_tibble( x=matrix( rnorm(1000,0,2) ,nrow=100,ncol=10,dimnames = list(NULL,c("C1","C2","C3","C4","C5","C6","C7","C8","C9","C10" ) ))) 

我担心的是,虽然我可以通过一个乏味的过程来实现这一点,但它被证明是缓慢的,尤其是矩阵乘法


我们能用一些聪明的方法绕过矩阵构造和乘法,得到同样的tibble
W_total
?谢谢。

如果我们需要在单链中执行此操作

library(dplyr)
library(magrittr)
W1 <- W %>% 
      select(C2, C4, C6, C8, C10) %>%
      as.matrix %>%
      multiply_by_matrix(R) %>%
      as_tibble %>%
      bind_cols(W, .)

这很有帮助!唯一的问题是,
multiply_by_matrix
只在
W1
中创建一列。所以我还添加了几行来修复它。@tobinz如果你看一下代码,我在那里使用了
bind\u cols
而不是
add\u column
谢谢!我试过密码。它确实返回一个
100-by-11
tibble,而不是
100-by-21
。我刚刚想出了另一种解决方法:在
bind\u cols(W,)
之前,添加一行
作为\u tible%>%
解决了这个问题。@tobinz抱歉,我忽略了这一点part@tobinz考虑到这一点,您期望的解决方案是什么
W_use <- as.matrix(W %>% select(C2,C4,C6,C8,C10))
WR <- W_use %*% R
W_total <- W %>% add_column(WR)
library(dplyr)
library(magrittr)
W1 <- W %>% 
      select(C2, C4, C6, C8, C10) %>%
      as.matrix %>%
      multiply_by_matrix(R) %>%
      as_tibble %>%
      bind_cols(W, .)
W %>% 
   select(C2, C4, C6, C8, C10) %>% 
   t %>% 
   crossprod(R) %>% 
   add_column(.)