R purrr,我可以在modify_if语句中使用两个数组吗?

问题描述 投票:0回答:1

我想用一个数组来决定是否修改另一个数组,希望使用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。

r arrays vector vectorization purrr
1个回答
4
投票

在整洁的宇宙中,我想你要的是:

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
© www.soinside.com 2019 - 2024. All rights reserved.