每次迭代后跳过元素时,将列元素相乘

时间:2018-12-12 07:00:03

标签: r

我在R中有一个带有一列的数据框,如下所示,我想创建一个具有一列的新数据框,该数据框具有现有列的元素的乘积。

/**
 * Get the password reset validation rules.
 *
 * @return array
 */
protected function rules()
{
    // If you have further fields and rules you can add in following array.
    return [
        'token' => 'required',
        'email' => 'required|email',
        'password' => 'required|confirmed|min:6',
    ];
}

/**
 * Get the password reset validation error messages.
 *
 * @return array
 */
protected function validationErrorMessages()
{
    return [
         // Here write your custom validation error messages
    ];
}

3 个答案:

答案 0 :(得分:2)

我们可以使用revcumprod

df$y <- rev(cumprod(rev(df$x)))
df

#  x    y
#1 2 5760
#2 3 2880
#3 4  960
#4 5  240
#5 8   48
#6 6    6

数据

df <- data.frame(x = c(2,3,4,5,8,6))  

答案 1 :(得分:1)

您还可以将基数R Reduceaccumulate = TRUE一起使用,即

rev(Reduce(`*`, rev(df$x), accumulate = TRUE))
#[1] 5760 2880  960  240   48    6

答案 2 :(得分:0)

我们可以使用accumulate

library(tidyverse)
df %>%
   mutate(y = accumulate_right(x, `*`))
#  x    y
#1 2 5760
#2 3 2880
#3 4  960
#4 5  240
#5 8   48
#6 6    6

数据

df <- data.frame(x = c(2,3,4,5,8,6))