R 数据帧中每行的矩阵乘法

R 数据帧中每行的矩阵乘法,r,matrix,dplyr,matrix-multiplication,R,Matrix,Dplyr,Matrix Multiplication,这应该是基本的,但我无法理解。 我有一个数据帧,希望创建一个新变量,作为每行与预先指定的向量的矩阵乘法 library(dplyr) data <- data.frame(matrix(1:6,2)) vector <- c(1,0,1) ##NOT WORKING data <- data %>% mutate(multiplication = as.numeric(data[,]) %*% vector) mm <- function(x,y){ n

这应该是基本的,但我无法理解。 我有一个数据帧,希望创建一个新变量,作为每行与预先指定的向量的矩阵乘法


library(dplyr)
data <- data.frame(matrix(1:6,2))
vector <- c(1,0,1)

##NOT WORKING
data <- data %>%
mutate(multiplication = as.numeric(data[,]) %*% vector)

mm <- function(x,y){
  n <- as.numeric(x)
  m <- n %*% y
  print(as.numeric(m))
}

##NOT WORKING
data$mm <- lapply(data[,], function(x) mm(x,vector))


图书馆(dplyr)

数据您可以使用
应用

data%>%变异(乘法=应用(,1,函数(x)x%*%向量))
#>x1x2x3乘法
#> 1  1  3  5              6
#> 2  2  4  6              8

您可以使用
应用

data%>%变异(乘法=应用(,1,函数(x)x%*%向量))
#>x1x2x3乘法
#> 1  1  3  5              6
#> 2  2  4  6              8
一个选项可以是:

data %>%
 rowwise() %>%
 mutate(multiplication = sum(c_across(everything()) * vector))

     X1    X2    X3 multiplication
  <int> <int> <int>          <dbl>
1     1     3     5              6
2     2     4     6              8
数据%>%
行()
变异(乘法=和(c_横跨(一切())*向量))
x1x2x3乘法
1     1     3     5              6
2     2     4     6              8
一个选项可以是:

data %>%
 rowwise() %>%
 mutate(multiplication = sum(c_across(everything()) * vector))

     X1    X2    X3 multiplication
  <int> <int> <int>          <dbl>
1     1     3     5              6
2     2     4     6              8
数据%>%
行()
变异(乘法=和(c_横跨(一切())*向量))
x1x2x3乘法
1     1     3     5              6
2     2     4     6              8

使用
作为.matrix


图书馆(tidyverse)
数据x1x2x3乘法
#> 1  1  3  5              6
#> 2  2  4  6              8

由(v0.3.0)于2020年12月11日创建使用
作为.matrix


图书馆(tidyverse)
数据x1x2x3乘法
#> 1  1  3  5              6
#> 2  2  4  6              8

由(v0.3.0)于2020年12月11日创建,我们可以使用
crossprod
from
base R

data$multiplication <- crossprod(t(data), vector)[,1]

我们可以使用
crossprod
from
base R

data$multiplication <- crossprod(t(data), vector)[,1]

@基R中的user20650 so:
data$multiplication@user20650基R中的so:
data$multiplication