乘以R中向量的某些元素

Multiply certain elements of a vector in R

我有一个包含整数的向量 [1:360],需要找到第一组、第二组……第十二组 30 个元素的乘积。最终,我需要一个函数来为我提供一个向量 [1:12],其中包含所有 12 个 30 元素区间的乘积。 我是 R 的新手,已经坚持了太久。

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

在没有可重现的例子的情况下,让我们用从正态分布中抽取的 360 个数字的向量来做一个:

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

我们可以通过 matrix(vec, nrow = 30)vec 变成一个 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