R 根据列号使用 if else 语句

R use if else statement depending upon column number

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

} Error: unexpected '}' in "}"

我真的很想修复代码,因为我知道当我将它放入我的 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),因此在 R 中,此代码检查是否有 6 列绘制第一个折线图,否则绘制另一个有 7 列的折线图。我环顾四周,看到了几种有条件地绘制的方法,但没有一种方法能保持我想要的美感。

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

我还注意到的另一件事是您的 if 语句周围没有括号,我认为这是必要的。