更改条件以替换向量中的元素

L. *_*tis 6 replace if-statement r vector conditional-statements

考虑向量:

use = c(1,1,2,2,5,1,2,1,2,5,1)

在第一个数字 5 出现在序列中之前,我试图将所有 5 不同的数字替换为 NA: ifelse(use != 5,NA,1)。之后的条件应该是 ifelse(use != 5,0,1)

输出将是:

after = c(NA,NA,NA,NA,1,0,0,0,0,1,0)

有小费吗?

Ric*_*ord 1

您可以使用which来查找目标的位置,然后case_when

use <- c(1,1,2,2,5,1,2,1,2)

first_five <- min(which(use == 5))
dplyr::case_when(
  seq_along(use) < first_five ~ NA_real_,
  seq_along(use) == first_five ~ 1, 
  TRUE ~ 0
)
#> [1] NA NA NA NA  1  0  0  0  0
use
#> [1] 1 1 2 2 5 1 2 1 2
Run Code Online (Sandbox Code Playgroud)

reprex 包(v0.3.0)于 2020-01-14 创建