【问题标题】:Multiply certain elements of a vector in R将R中向量的某些元素相乘
【发布时间】:2020-08-22 18:19:17
【问题描述】:

我有一个带有整数的向量 [1:360],需要找到第一个、第二个......第十二组 30 个元素的乘积。最终,我需要一个函数,它可以给我一个向量 [1:12],其中包含所有 12 个 30 元素间隔的乘积。 我对 R 还很陌生,并且在这方面停留了太久。

【问题讨论】:

标签: r vector multiplication


【解决方案1】:

执行此操作的一种简单方法是将向量转换为 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多