R tibble中的矩阵乘法
我有一个关于如何在tibble中进行矩阵乘法的具体问题 示例代码为: 假设我有一个tibleR 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"
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(.)