R использовать оператор if в зависимости от номера столбца - PullRequest
0 голосов
/ 30 мая 2018

У меня есть линейный график, который имеет верхний и нижний уровни достоверности определенного дня недели, верхний и нижний уровни достоверности будних дней, если это будний день, и выходные, если это выходные, счетчик вчерашних дней в час идень до вчерашнего дня считается в час.Я хочу, чтобы день до вчерашнего дня считался в час, если день не понедельник или суббота, потому что эта линия не относится к линейному графику.У меня есть оператор if else, и он отлично работает, отображая график, но выдает ошибку:

} Ошибка: неожиданное '}' в "}"

Iочень хотел бы исправить код, потому что я знаю, что это может и, вероятно, вызовет проблемы, когда я помещу его в свое блестящее приложение.Это код:

if ncol(yesterday_line_chart) == 6 {

plot_ly(yesterday_line_chart, x = ~hour) %>%
    add_trace(y = ~yesterday, name = 'yesterday', mode = 'lines', line = list(color = 'rgb(205, 12, 24)', width = 3)) %>%
    add_trace(y = ~X95_up_conf_dow, name = 'dow upper conf', line = list(color = 'rgb(77, 201, 0)', width = 4, dash = 'dot')) %>%
    add_trace(y = ~X95_low_conf_dow, name = 'dow lower conf', line = list(color = 'rgb(77, 201, 0)', width = 4, dash = 'dot')) %>%
    add_trace(y = ~X95_up_conf_wd_we, name = 'we/wd upper conf', line = list(color = 'rgb(126, 142, 197)', width = 4, dash = 'dot')) %>%
    add_trace(y = ~X95_low_conf_wd_we, name = 'we/wd lower conf', line = list(color = 'rgb(126, 142, 197)', width = 4, dash = 'dot')) %>%
    layout(title = "Title",
       xaxis = list(title = "Time"),
       yaxis = list (title = "(count)")) 
}

else {

plot_ly(yesterday_line_chart, x = ~hour) %>%
    add_trace(y = ~yesterday, name = 'yesterday', mode = 'lines', line = list(color = 'rgb(205, 12, 24)', width = 3)) %>%
    add_trace(y = ~day_bef_yest, name = 'day bef yest',mode = 'lines+markers') %>%
    add_trace(y = ~X95_up_conf_dow, name = 'dow upper conf', line = list(color = 'rgb(77, 201, 0)', width = 4, dash = 'dot')) %>%
    add_trace(y = ~X95_low_conf_dow, name = 'dow lower conf', line = list(color = 'rgb(77, 201, 0)', width = 4, dash = 'dot')) %>%
    add_trace(y = ~X95_up_conf_wd_we, name = 'we/wd upper conf', line = list(color = 'rgb(126, 142, 197)', width = 4, dash = 'dot')) %>%
    add_trace(y = ~X95_low_conf_wd_we, name = 'we/wd lower conf', line = list(color = 'rgb(126, 142, 197)', width = 4, dash = 'dot')) %>%
    layout(title = "Title",
       xaxis = list(title = "Time"),
       yaxis = list (title = "(count)")) 
} 

Код Python перед тем, как я использую его в R, условно удаляет этот столбец (day_before_yesterday), если это Mon или Sat, поэтому в R этот код проверяет, есть ли 6столбцы отображают первый линейный график, в противном случае - другой, имеющий 7 столбцов.Я огляделся и увидел несколько способов условно построить сюжет, но ни один из них не сохранил ту эстетику, которую я хочу.

1 Ответ

0 голосов
/ 30 мая 2018

Я не уверен, что это проблема, но R, похоже, имеет правила if else, отличные от большинства других языков. Попробуйте вывести else и вместо этого: if(ncol(yesterday_line_chart) ==7) и посмотрите, поможет ли это ...

Еще одна вещь, которую я заметил, это то, что у вас нет скобок вокруг вашего заявления if, которое я считаю необходимым.

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