我想用一个数组来决定是否修改另一个数组,希望使用modify_if,但可能有更简单的方法。 这是我的mwe。
vec1 <- array( c(1, 3, 5, 6, 7, 3, 2, 3))
vec2 <- array(c(TRUE, TRUE, FALSE,TRUE, FALSE, FALSE, TRUE, FALSE))
vec1 %<>% purrr::modify_if(~ .x[vec2], vec1 + 1)
所以我已经有了逻辑数组来告诉我哪些要修改。 如果vec2为true,那么我想修改该索引处的值,将vec1的当前值增加1,否则如果vec2为false,那么就保留原来的值。 我想要的结果是2, 4, 5, 7, 7, 3, 3, 3. Thx, J。
在整洁的宇宙中,我想你要的是:
vec1
# [1] 1 3 5 6 7 3 2 3
vec1 %<>% purrr::modify_if(vec2, ~ .x + 1)
vec1
# [1] 2 4 5 7 7 3 3 3
虽然正如@MartinGal所建议的那样,基础R的可能更直接。
vec1 <- array( c(1, 3, 5, 6, 7, 3, 2, 3))
vec1[vec2] <- vec1[vec2] + 1
vec1
# [1] 2 4 5 7 7 3 3 3