Я пытаюсь изменить значения в векторе на основе двух условий с использованием двух разных векторов и purrr::modify2
, не совсем правильно синтаксис и не могу найти примеры в Интернете. Вот mwe:
library(tidyverse)
library(magrittr)
arr1 <- c(6, 2, 3, 2, 1, 5, 4, 2, 3, 7)
arr2 <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
prob <- c(0.65, 0.45)
arr1 %<>% modify2(arr1,
arr2,
~ if (.x == 2 & .y == 0) ~ rbinom(1,1,prob[1]) * 2
else
if (.x == 2 & .y != 0) ~ rbinom(1,1,prob[2]) * 2)
Я пытаюсь найти, когда .x == 2
и .y == 0
(тот же индекс в обоих массивах), а затем заменить 2 в .x значением, созданным rbinom(1,1,prob[1]) * 2
, который, я думаю, должен быть либо 0, либо 2? Затем, если .x == 2
и .y != 0
, используйте другую вероятность для замены значения в arr1
. Я также хочу, чтобы расчет rbinom выполнялся индивидуально для каждой записи, если это имеет смысл? Нужно ли мне использовать нотацию function (x) ......
, чтобы она выполнялась для каждого экземпляра? Ясно, что более простые и / или более элегантные решения приветствуются. Спасибо. Дж