цикл for и оператор if-else при присваивании или округлении значений переменной в R - PullRequest
0 голосов
/ 14 марта 2019

Попытка выяснить, как я могу написать код на R, используя циклы for и операторы 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])}
}

Пожалуйста, помогите

Ответы [ 4 ]

0 голосов
/ 14 марта 2019

Вы можете сделать это легко, используя оператор ifelse

x = c(6, 1, 5, 10, 3, 0, 3, 7, 1, 6, 1, 4)

y =ifelse(x>=5,10,0)
0 голосов
/ 14 марта 2019

Что-то вроде этого должно сделать это:

y <- as.integer(x > 5)*10
# [1] 10  0  0 10  0  0  0 10  0 10  0  0

Ваш код выводится как символ. Нет необходимости делать это только для печати, но если вам нужен результат как символ по какой-то другой причине, вы можете просто сделать as.character(y) в конце.

0 голосов
/ 14 марта 2019

Согласно вашему утверждению у вас есть два варианта: x> = 5 и x <5. Вы сказали, что все в 5 и выше должно идти до 10, а все ниже 5 должно идти в 0. Таким образом, следующее для цикла с условными (если) операторами будет работать. </p>

Приветствия

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
0 голосов
/ 14 марта 2019

Здесь вам не нужны петли:

y <- as.integer(x >= 5)

# [1] 1 0 1 1 0 0 0 1 0 1 0 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...