У меня есть следующая таблица:
|name|Tin|Tout|Hin|Hout|DT min/2|alpha|
|-----|-----|-----|-----|-----|-----|-----|
|water|20 |15 |2.33 |0 |5 |1 |
|waste|15 |20 |0 |2.12 |5 |1 |
|air |20 |15 |0.03 |0 |5 |1 |
|wast |15 |20 |0 |0.03 |5 |1 |
|co2 |15 |20 |0 |0.45 |5 |1 |
И следующий номер, объявленный в другом чанке.
pinch = 16
Я хотел бы выделить красным цветом все строки, за которые Tin < pinch < Tout
. Я знаю, что в этом примере это относится ко всем строкам, однако у меня есть много других подобных таблиц, и я хотел бы автоматизировать этот процесс.
Кто-нибудь знает как это сделать ?
Я пробовал искать другие решения подобных проблем, однако мне было довольно сложно адаптировать эти решения к моей проблеме, так как они были слишком специфичны. Кроме того, у меня недостаточно знаний о R, чтобы понять код, написанный другими.
Это бы мне очень помогло!
Вы можете использовать kableExtra
и dplyr
, как в следующем коде. Это предполагает, что ваши данные находятся во фрейме данных.
library(knitr)
library(kableExtra)
library(dplyr)
dfs <- "name|Tin|Tout|Hin|Hout|DT_min2|alpha
water|20 |15 |2.33 |0 |5 |1
waste|15 |20 |0 |2.12 |5 |1
air |20 |15 |0.03 |0 |5 |1
wast |15 |20 |0 |0.03 |5 |1
co2 |15 |20 |0 |0.45 |5 |1"
df <- read.table(text=dfs, sep='|', header=T)
pinch <- 16
red <-
df %>%
mutate(red = ifelse(Tin < pinch & pinch < Tout, TRUE, FALSE)) %>%
mutate(row=row_number()) %>%
select(red, row)
kable(df) %>% kable_styling(full_width = T) %>% row_spec(red$row[red$red], color='red')
Фрейм данных под названием red
использует ifelse
для обработки номеров строк, которые окрашиваются в красный цвет при вызове kableExtra::row_spec
.