【问题标题】:R purrr, can I use two arrays in a modify_if statement?R purrr,我可以在 modify_if 语句中使用两个数组吗?
【发布时间】:2020-08-27 05:50:30
【问题描述】:

我想用一个数组来决定是否修改另一个,希望使用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 为假,则保留原始值。我正在寻找的结果是 2、4、5、7、7、3、3、3。谢谢,J。

【问题讨论】:

  • 您在寻找vec1[vec2] &lt;- vec1[vec2] + 1 吗?

标签: r arrays vector vectorization purrr


【解决方案1】:

在tidyverse中,我想你想要

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 建议的那样,base 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

【讨论】:

    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多