R为数组中的每个事件应用新的函数求值

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

感谢许多帮助,我得到了一个表达式,当满足某些条件时,该表达式可以将rbinom的值替换为向量。我的问题是,它总是替换相同的值,即,对于满足条件的每个实例都不会进行新的评估。我想我只需要将其包装在一个sapply语句中,但是语法不正确。 MWE:

arr1 <- c(8, 2, 5, 2, 3, 2, 2, 2, 8, 2, 4)
arr2 <- c(0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0)

arr1
arr1[Reduce("&", list(arr1 == 2, arr2 ==1))] <- rbinom(1,1,0.5) * 2
arr1
arr1
[1] 8 2 5 0 3 0 0 0 8 0 4

我希望它可以更改某些值,但不会更改其他值,因此请针对每个实例再次评估结果。这是purrr :: modify2的良好应用吗?谢谢。 J

r arrays tidyverse substitution evaluation
1个回答
1
投票

可能是您打算使用:

inds <- arr1 == 2 & arr2 == 1
arr1[inds] <- rbinom(sum(inds), 1, 0.5) * 2
© www.soinside.com 2019 - 2024. All rights reserved.