乘以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
我有一个包含整数的向量 [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