#r #for-loop #if-statement
#r #цикл for #оператор if
Вопрос:
Пытаюсь выяснить, как я могу написать код на R, используя операторы for-loops и if-else. В основном мне были предоставлены следующие переменные:
> x = c(6, 1, 5, 10, 3, 0, 3, 7, 1, 6, 1, 4)
> y = NA
Код должен округлять, или то, что я думаю, на самом деле присваивает любое число от 5 или больше 10 и любое число от 5 до 0.
Таким образом, результатом в основном должна быть переменная y, равная набору значений 0 и 10.
Я попробовал несколько кодов, но безуспешно:
>for (y in 1:12) {y = x
>if (x > 5){printText = paste('10'[y])}
>else if (x < 5){printText = paste('0'[y])}
}
Пожалуйста, помогите
Комментарии:
1. Что произойдет, если
x == 5
?2. Извините, я забыл упомянуть, что если число равно 5 или больше, то его следует округлить до 10.
Ответ №1:
Согласно вашему заявлению, у вас есть два варианта: x >= 5 и x <5. Вы сказали, что все, что равно 5 и выше, должно равняться 10, а все, что ниже 5, должно равняться 0. Итак, следующий цикл for с операторами conditionals (if) будет работать.
Приветствия,
x = c(6, 1, 5, 10, 3, 0, 3, 7, 1, 6, 1, 4)
y = c()
for(i in 1:length(x)){
if(x[i] >= 5){
y[i] = 10
}else if(x[i] < 5){
y[i] = 0
}
}
#y = 10 0 10 10 0 0 0 10 0 10 0 0
Комментарии:
1. Спасибо, я полагаю, это то, что я ищу.
2. Рад помочь. Надеюсь, вы найдете логику понятной и хорошее введение в решение подобных задач. Хотя использование integer и умножение на 10 будет работать и быстрее, понимание циклов for, вероятно, будет очень полезно в будущем.
Ответ №2:
Здесь циклы не нужны:
y <- as.integer(x >= 5)
# [1] 1 0 1 1 0 0 0 1 0 1 0 0
Комментарии:
1. Понятно, но есть ли способ использовать for-loops для обхода каждого элемента x?
2. @stpnchk3plswчто бы вы хотели использовать в цикле? Если в проблеме, которую вы пытаетесь решить, есть какой-то другой аспект, который, по вашему мнению, нельзя решить таким образом, вы можете захотеть предоставить более подробную информацию в своем вопросе.
3. Извините, возможно, я был неясен в своем объяснении. Я попытался изложить это так, как, как мне казалось, я это понял. Однако спасибо за вашу помощь. Я думаю, что код J.Snake — это то, что я ищу.
Ответ №3:
Что-то вроде этого должно это сделать:
y <- as.integer(x > 5)*10
# [1] 10 0 0 10 0 0 0 10 0 10 0 0
Ваш код выводится в виде символа. Нет необходимости делать это только для печати, но если вам нужен результат в виде символа по какой-либо другой причине, вы можете просто сделать as.character(y)
в конце.
Ответ №4:
вы можете сделать это легко с помощью инструкции ifelse
x = c(6, 1, 5, 10, 3, 0, 3, 7, 1, 6, 1, 4)
y =ifelse(x>=5,10,0)