gpt4 book ai didi

r - 如何按列获取所有值组合的乘积?

转载 作者:行者123 更新时间:2023-12-04 10:44:44 25 4
gpt4 key购买 nike

例如,如果我有一个矩阵如下

> matrix(c(1, 1:8), nrow = 3)
[,1] [,2] [,3]
[1,] 1 3 6
[2,] 1 4 7
[3,] 2 5 8

那么如何按列(如下所列)获得所有值组合的乘积向量?

请注意 1 重复了两次
1 * 3 * 6
1 * 3 * 7
1 * 3 * 8

1 * 4 * 6
1 * 4 * 7
1 * 4 * 8

1 * 5 * 6
1 * 5 * 7
1 * 5 * 8

1 * 3 * 6
1 * 3 * 7
1 * 3 * 8

1 * 4 * 6
1 * 4 * 7
1 * 4 * 8

1 * 5 * 6
1 * 5 * 7
1 * 5 * 8

2 * 3 * 6
2 * 3 * 7
2 * 3 * 8

2 * 4 * 6
2 * 4 * 7
2 * 4 * 8

2 * 5 * 6
2 * 5 * 7
2 * 5 * 8

最佳答案

我们可以转换为 data.frame ,做一个 expand.grid在列上,然后 Reduce通过将每一行相乘

Reduce(`*`, expand.grid(as.data.frame(m1)))

或与 tidyverse
library(dplyr)
library(tidyr)
library(purrr)
expand_grid(V1 = m1[,1], V2 = m1[,2], V3 = m1[, 3]) %>%
transmute(out = reduce(., `*`)) %>%
pull(out)
#[1] 18 21 24 24 28 32 30 35 40 18 21 24 24 28 32 30 35 40 36 42 48 48 56 64 60 70 80

或使用 data.table
library(data.table)
as.data.table(m1)[, Reduce(`*`, do.call(CJ, .SD))]
数据
m1 <- matrix(c(1, 1:8), nrow = 3) 

关于r - 如何按列获取所有值组合的乘积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59757732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com