将R中向量的某些元素相乘

问题描述

我有一个带整数的矢量[1:360],需要查找30个元素的第一组,第二组...第十二组的乘积。最终,我需要一个函数,该函数为我提供所有十二个30个元素间隔的乘积的矢量[1:12]。 我对R相当陌生,并且在这个问题上停留了太长时间。

解决方法

一种简单的方法是将向量转换为30行矩阵并获得每一列的乘积。

在没有可复制的示例的情况下,让我们使用从正态分布中得出的360个数字的向量进行构建:

set.seed(69)
vec <- rnorm(360)

只需执行vec,就可以将matrix(vec,nrow = 30)变成30 * 12的矩阵,它将按列填充矩阵。然后,通过使用apply将函数prob应用于每一列来获得每一列的乘积。

apply(matrix(vec,nrow = 30),2,prod)
#> [1] -6.253460e-09 -4.413086e-09 -1.332389e-10  1.041448e-08 -1.779489e-08  1.255979e-10
#> [7]  3.463687e-13 -6.265196e-12  8.300651e-04 -1.041469e-10  4.256378e-09  1.439522e-09