Я довольно новичок в r, и я пытаюсь лучше понять этот язык, решая проблемы из одной из книг о r (я не уверен, могу ли я поместить заголовок здесь, чтобы не рекламировать его). Одной из проблем является требование условного присвоения значений переменным, основанным на определенных критериях. Чтобы быть более точным, я случайно выбрать число в диапазоне от 2 до 12 лет (метание 2 кости) и в зависимости от значения я получаю, я должен присваивать значения переменным status
и points
следующим образом:Назначение переменных внутри функции ifelse в r
- если оценка является 2,3, или 12, то
status <- FALSE
иpoints <- NA
- , если оценка 7 или 11, то
status <- TRUE
иpoints <- NA
- , если оценка является 4-6,8-10 затем
status <- NA
иpoints <- score
Это довольно простая задача, и я знаю, что следующий код работает:
score <- sample(2:12,1)
if(score %in% c(2,3,12)){
status <- FALSE
points <- NA
} else if(score %in% c(7,11)){
status <- TRUE
points <- NA
} else {
status <- NA
points <- score
}
Я также пытался решить эту проблему с помощью функции ifelse
, но я получаю сообщение об ошибке при попытке присвоить переменные. Вот что я сделал (я знаю, что то, что я получаю сейчас, является символьным вектором, но это был единственный способ заставить его работать).
ifelse(any(score == c(2,3,12)), "game_status = FALSE, point = NA",
ifelse(any(score == c(7,11)), "game_status = TRUE, point = NA",
paste("game_status = NA, point = ", score)))
Есть ли способ присвоить значения в функции ifelse
? Кроме того, это можно сделать с помощью функции switch
? Я пытаюсь выяснить, есть ли только один способ решить эту простую проблему, чтобы я знал, как действовать с более сложными.
Спасибо!
'ifelse' - это функция. 'if' и' else' являются управляющими операторами. 'ifelse' означает иметь одно (возможно, векторное) возвращаемое значение. Он не предназначен для того, чтобы делать то, что вы пытаетесь сделать. – Thomas
'ifelse' должно быть присвоено что-то вроде:' example <-ifelse (...) ', поэтому вы не можете назначать значения внутри него. – Soheil
Этот вопрос нужно переписать. 'ifelse' vs' if-else' и присваивание vs значениям переменных. Также необходимо удалить тег loops. –