如何在 R 中创建序列?

How can I create a sequence in R?

我知道 R 中有一个函数可以创建一个序列,但并不完全符合我的要求。

我有一个数据框,每次我 运行 我的代码时它的大小都会改变。这是我的数据框

 pais   cum_cases  time_cases  
 MX        1            1
 MX        4            2
 MX        5            6
....

我想将 cum_cases 列的值替换为值加倍的系列。 例子 我真的不关心 cum_Cases 列中的值是什么我想用特定值开始的双精度值替换。 例如,如果我想从值 **10 开始,所有列的下一个值都必须替换为

cum_cases
  10
  20
  40
  80
  160
  320
... Until the last row of my data frame

示例 2。 x -> 6

cum_cases
  6
  12
  24
  48
  96
  192
... Until the last row of my data frame

您需要将起始值(第一行)乘以 2 的 rowid - 1 次方,因为该值每行都会翻倍。使用 dplyr 执行此操作的一种方法是:

df <- data.frame(time_cases = c(1, 2, 6, 10, 11, 15), cum_cases = 6)

library(dplyr)
df %>% 
  tibble::rowid_to_column() %>% 
  mutate(cum_cases = cum_cases[1] * 2 ^ (rowid - 1)) %>% 
  select(-rowid)

  time_cases cum_cases
1          1         6
2          2        12
3          6        24
4         10        48
5         11        96
6         15       192

我先用tibble::rowid_to_column()创建了一个rowid,然后又删除了。

您可以将 cumprodrep 结合使用以产生加倍序列。

(x$cum_cases <- 10 * cumprod(c(1, rep(2, nrow(x)-1))))
#[1] 10 20 40

(x$cum_cases <- 6 * cumprod(c(1, rep(2, nrow(x)-1))))
#[1]  6 12 24

数据:

x <- data.frame(pais="MX", cum_cases=c(1,4,5), time_cases=c(1,2,6))