Использование для циклов с оператором if-else - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь выполнить домашнее задание, но застрял в этом вопросе. Не слишком знаком с использованием R или кодированием в целом. В основном нам даны две переменные:

PredictedTemperature = c(-10, -11, -8, -3, 4, 4, 2) 

DaysOfTheWeek = c('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday')

Итак, мы должны были прийти с кодом, который объединяет циклы for с операторами if-else. Я пробовал несколько способов без успеха. Конечным результатом должен быть ответ на вставленное утверждение, в котором говорится, что «температура будет выше / ниже / одинакова» (градусы) «в (конкретный день)

Код, который я получил до сих пор, показан ниже, а переменная в цикле for имеет значение day:

for (day in 2:7) {
    if(PredictedTemperature[day+1] - PredictedTemperature[day] > 0){
        tempDiff = PredictedTemperature[day+1] - PredictedTemperature[day]
        printText = paste('The temperature on', DaysOfTheWeek, 'should warm up by', tempDiff, 'degrees')
        print(printText)}
    else{if(PredictedTemperature[day+1] - PredictedTemperature[day] <= 0){
        tempDiff = PredictedTemperature[day+1] - PredictedTemperature[day]
        printText = paste('The temperature on', DaysOfTheWeek, 'should cool down by', tempDiff, 'degrees')
        print(printText)}
    else{
        tempDiff = PredictedTemperature[day+1] - PredictedTemperature[day]
        printText = paste('The temperature on', DaysOfTheWeek, 'will be the same as yesterday')
        print(printText)}}}

У меня дни в основном правильные, за исключением дней, которые должны исключать понедельник, а также все остальные дни, начиная со вторника и их изменения температуры. Пожалуйста, помогите!

Ответы [ 2 ]

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

Вы можете использовать оператор ifelse, чтобы сделать трюк

PredictedTemperature = c(-10, -11, -8, -3, 4, 4, 2) 
DaysOfTheWeek = c('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday')
final <- data.frame(DaysOfTheWeek,PredictedTemperature)
final$condition <- ifelse(lead(final$PredictedTemperature,1) - final$PredictedTemperature > 0,paste('The temperature on', DaysOfTheWeek, 'should warm up by', tempDiff = lead(final$PredictedTemperature,1)- final$PredictedTemperature, 'degrees'),ifelse(lead(final$PredictedTemperature,1) - final$PredictedTemperature <= 0 ,paste('The temperature on', DaysOfTheWeek, 'should cool down by', tempDiff = lead(final$PredictedTemperature,1)- final$PredictedTemperature, 'degrees'),paste('The temperature on', DaysOfTheWeek, 'will be the same as yesterday')))
0 голосов
/ 13 марта 2019

Ваше требование было не очень ясным, но исходя из моего понимания, это могло бы сработать:

for(day in 1:7) {
  if(day==7){next}
  tempDiff = PredictedTemperature[day+1] - PredictedTemperature[day]
  if(tempDiff > 0){printText = paste('The temperature on', DaysOfTheWeek[day+1], 'should warm up by', abs(tempDiff), 'degrees')
  } else if(tempDiff < 0){printText = paste('The temperature on', DaysOfTheWeek[day+1], 'should cool down by', abs(tempDiff), 'degrees')
  } else if(tempDiff == 0){printText = paste('The temperature on', DaysOfTheWeek[day+1], 'will be the same as yesterday')}
  print(printText)
}

Выход:

[1] "The temperature on Tuesday should cool down by 1 degrees"
[1] "The temperature on Wednesday should warm up by 3 degrees"
[1] "The temperature on Thursday should warm up by 5 degrees"
[1] "The temperature on Friday should warm up by 7 degrees"
[1] "The temperature on Saturday will be the same as yesterday"
[1] "The temperature on Sunday should cool down by 2 degrees"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...