R 对数组中的每个事件应用新的函数评估

R sapply new evaluation of function for each incidence in array

多亏了很多帮助,我得到了一个表达式,可以在满足特定条件时将 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

您的意思可能是:

inds <- arr1 == 2 & arr2 == 1
arr1[inds] <- rbinom(sum(inds), 1, 0.5) * 2