Случайное присвоение числа в функции ifelse не возвращает ожидаемых результатов? - PullRequest
1 голос
/ 11 апреля 2019

У меня есть набор данных (summer2) с набором точек, каждому из которых присваивается логическое значение «Использование» (0 для случайной точки, 1 для использованной точки) и уникальный идентификатор (UniqueID) в диапазоне от 1 до 747. I Я хочу создать новый столбец "UniqueID_2", в котором, если это используемая точка (Use = 1), я хочу, чтобы он равнялся полю UniqueID. Если Use = 0, я хочу назначить новый случайный идентификационный номер между 728-747.

У меня есть функция ifelse с функцией примера, вложенной в качестве третьего аргумента, и когда я ее запускаю, я получаю значения 348-736, когда каждое значение должно быть в диапазоне 728-747.

Я довольно новичок в R, поэтому я предполагаю, что это синтаксическая ошибка или, возможно, я просто использую неправильную функцию.

summer2["UniqueID_2"]
summer2$UniqueID_2 = ifelse(summer2$Use == 1, summer2$UniqueID, sample(727:748, 1))

1 Ответ

1 голос
/ 11 апреля 2019

Третий аргумент, который вы передаете ifelse, должен быть вектором такой же длины, что и два других, иначе перезапуск включится (с нелогичным результатом, когда вы перезапускаете одно случайное число).Вам нужно:

ifelse(summer2$Use == 1, summer2$UniqueID, sample(727:748, length(summer2$Use), replace = TRUE)
...