簡體   English   中英

如何在 R 中明智地將元素添加到基於另一個向量 position 的向量中

[英]How to add elements to a vector based on another vector position wise in R

我有一個長度為 192 的正 integer 值向量 C。我想根據這個向量 C 生成另一個向量。 要創建的新向量稱為 B(與 C 長度相同)。 創建算法是:

每當在 C 中觀察到大於 0 的值時,將相同的值添加回向量 B 中的 12 個位置。例如,如果 C 的前 15 個條目為 0,第 16 個條目為 3,那么我想添加值 3,在向量 B 中向后 12 個位置(即 16-12=位置 4)。向量 B 將以這種方式在 C 的所有值上生成。

任何幫助將不勝感激。 向量C可以通過R庫“暴發”獲得,package的數據文件是ebola_kikwit_1。

這似乎不是很棘手。 一個索引向量和一個for循環將完成問題的要求。

library("outbreaks")

i <- which(ebola_kikwit_1995$onset > 0)
i <- i[i > 12]

ebola_kikwit_1995$B <- 0L
for(j in i){
  ebola_kikwit_1995$B[j] <- ebola_kikwit_1995$onset[j] + ebola_kikwit_1995$B[j - 12]
}

ebola_kikwit_1995$B
#  [1]  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
# [28]  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
# [55]  0  0  0  0  0  1  1  1  0  0  0  0  3  0  0  0  1  2  0  2  0  2  0  1  0  0  0
# [82]  0  0  0  0  4  0  3  1  3  1  0  1  1  1  1  1  5  3  0  5  7  2  2  5  3  2  8
#[109]  5  9  5  4 10 10 13 14 20 10  9 16  7 14 13 10 18 13 17 21 31 13 21 21 15 17 16
#[136] 18 22 18 18 24 35 16 22 23 18 18 19 21 26 21 23 26 37 17  0 25  0  0 21  0  0  0
#[163] 25 28  0 18  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0
#[190]  0  0  0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM