как совместить R ifelse () и kable () - PullRequest
0 голосов
/ 08 апреля 2019

У меня периодически запускаются сценарии R Markdown, которые содержат условные таблицы, которые я буду называть нарушителями. Вот пример фрейма данных:

df <- data.frame(Person = c("Jack", "Jill"), Violator = c("F", "F"))

#>   Person Violator
#> 1   Jack        F
#> 2   Jill        F

Я хочу показать только нарушителей (Violator == "T"), а в этом месяце их нет. Так что мой «нормальный» код kable ниже дает мне эту ошибку, «индекс за пределами» , что я ожидаю.

Как я могу изменить свой код kable на «ничего не делать», если нарушитель не равен «T». ifelse() путь? Я открыт для kableExtra() решений.

kable(df %>% filter(Violator == "T"), "html", align = "l") %>%
  kable_styling("striped", "hover", full_width = F) %>%
  column_spec(1, bold = T, background = "#FFFFFF") %>%
  collapse_rows(columns = 1)

1 Ответ

5 голосов
/ 08 апреля 2019

Этот простой подход должен работать, я думаю:

```{r}
temp <- df %>% filter(Violator == "T")

if(nrow(temp) != 0){
kable(temp, "html", align = "l") %>%
  kable_styling("striped", "hover", full_width = F) %>%
  column_spec(1, bold = T, background = "#FFFFFF") %>%
  collapse_rows(columns = 1)
}
```
...