Сделайте новую оценку функции для каждого инцидента в массиве - PullRequest
0 голосов
/ 29 мая 2020

Благодаря большой помощи, у меня есть выражение, которое заменяет значение из 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 ? Спасибо. Дж

1 Ответ

1 голос
/ 29 мая 2020

Вероятно, вы хотите использовать:

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