R根据列号使用if else语句

时间:2018-05-30 17:17:59

标签: r shiny plotly r-plotly

我有一个折线图,其具有特定星期几的置信水平的上限和下限,工作日的上下信心水平(如果是工作日)和周末(如果是周末),昨天的每小时数,以及前天每小时计算。如果日期不是星期一或星期六,我只想要前天的每小时计数,因为这条线与折线图无关。我有一个if else语句,它可以很好地显示图表但是给了我一个错误:

  

}   错误:“}”中的意外“}”

我真的想修复代码,因为我知道这可能会在我把它放入我的Shiny App时引起问题。这是代码:

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)")) 
} 

我在R中使用它之前的python代码有条件地删除该列(day_before_yesterday),如果它是Mon或Sat,所以在R中这个代码检查是否有6列绘制第一个线图,否则绘制另一个有7列。我环顾四周,已经看到了几种有条件的情节,但没有一种方法可以保持我想要的美学。

1 个答案:

答案 0 :(得分:2)

我不确定这是否是问题,但R似乎与大多数其他语言有不同的if else规则。 尝试取出else,而不是: if(ncol(yesterday_line_chart) ==7) 并看看是否有帮助......

我注意到的另一件事是你的if语句中没有我认为必要的括号。