data.frame中所有变量对的元素乘法求和

data.frame中所有变量对的元素乘法求和,r,dataframe,matrix,vector,algebra,R,Dataframe,Matrix,Vector,Algebra,除了crossprod之外,它们还有什么基本功能可以简单地执行(.1*.3)+(.2*.4)并为下面的我的data.frame输出.11 注意:这是一个玩具示例,data.frame可以有任意数量的列 x = data.frame(a = c(.1, .2), b = c(.3, .4)) # Desired Output (.1*.3)+(.2*.4) #= .11 crossprod(as.matrix(x)) # Current output a b a 0.05 0

除了
crossprod
之外,它们还有什么基本功能可以简单地执行
(.1*.3)+(.2*.4)
并为下面的我的data.frame输出
.11

注意:这是一个玩具示例,data.frame可以有任意数量的列

x = data.frame(a = c(.1, .2), b = c(.3, .4))

# Desired Output
(.1*.3)+(.2*.4) #= .11

crossprod(as.matrix(x))

# Current output
     a    b
a 0.05 0.11
b 0.11 0.25
甚至

x$a%*%x$b

我们可以使用
Reduce

c(Reduce(`%*%`, x))

如果如您所示,
x
是一个
data.frame
,您也可以在
tidyverse

x %>% rowwise() %>%
  mutate(c = prod(c_across(everything()))) %>%
  ungroup() %>%
  summarise(c = sum(c)) %>% 
  pull(c)

[1] 0.11
试一试


如果有更多列,您希望它做什么?
x %>% rowwise() %>%
  mutate(c = prod(c_across(everything()))) %>%
  ungroup() %>%
  summarise(c = sum(c)) %>% 
  pull(c)

[1] 0.11
> sum(do.call("*", x))
[1] 0.11