Выделить всю строку вместо ячейки

#r #openxlsx

#r #openxlsx

Вопрос:

Следующий код здесь выделяет ячейки, когда количество больше 32, я хочу, чтобы он выделял всю строку

 df = data.frame(Year = c(2018,2019,2020,2018,2019,2020,2018,2019,2020),
                Country = c("Germany","Germany","Germany", "Japan", "Japan", "Japan",  "Thailand", "Thailand", "Thailand"), 
                Count = c(17, 15, 60, 23, 25, 60, 50, 18, 31))

wb = createWorkbook()
addWorksheet(wb, "Master")
writeDataTable(wb, "Master", df, tableStyle = "TableStyleLight9")

yellow_style = createStyle(fgFill = "#FFFF00")
y = which(colnames(df) == "Count")
x = which(abs(df$Count) > 32)
addStyle(wb, sheet = "Master", style = yellow_style, rows = x 1, col = y)
saveWorkbook(wb, "Master.xlsx", overwrite = TRUE)
 

Ответ №1:

Чтобы выделить строки до определенного столбца, используйте 1:n индекс:

 library(openxlsx)

wb = createWorkbook()
addWorksheet(wb, "Master")
writeDataTable(wb, "Master", df, tableStyle = "TableStyleLight9")

yellow_style = createStyle(fgFill = "#FFFF00")

x = which(abs(df$Count) > 32)   1
y = 1:which(colnames(df) == "Count") # <==== here, 1 to up to column "count"

addStyle(wb, sheet = "Master", style = yellow_style,
         rows = x, col = y, gridExpand = TRUE)

saveWorkbook(wb, "Master.xlsx", overwrite = TRUE)
 

введите описание изображения здесь


Чтобы выделить всю строку, используйте некоторое большое число для столбцов:

 wb = createWorkbook()
addWorksheet(wb, "Master")
writeDataTable(wb, "Master", df, tableStyle = "TableStyleLight9")

yellow_style = createStyle(fgFill = "#FFFF00")

x = which(abs(df$Count) > 32)   1
y = which(colnames(df) == "Count"):10 # <==== here, I am using 10 as example

addStyle(wb, sheet = "Master", style = yellow_style,
         rows = x, col = y, gridExpand = TRUE)

saveWorkbook(wb, "Master.xlsx", overwrite = TRUE)
 

введите описание изображения здесь

На GitHub есть открытый запрос функции # 439

Комментарии:

1. Да, работает хорошо! Я изменил его на y = 1:which(colnames(df) == «Count»), и он выделяет всю строку. Приветствия