R 创建具有全彩色背景的可移动表格

R 创建具有全彩色背景的可移动表格,r,kable,R,Kable,在R中创建格式良好的表时遇到问题。我有90%的路要走,但不能一直走 我需要使用背景色为整个单元格着色,如下面的示例所示。我阅读了kablevignette,发现在html格式中,background不会给整个单元格着色。有没有办法绕过这个问题?我尝试将其设置为latex,但输出是latex,而不是显示在查看器中。我也是一个新手markdown用户,所以当我在那里尝试时,输出并不是我所希望的(这只是一个自包含的表) 我已经在SO上做了大量的搜索来寻找解决方案,但我一直没有找到它。在R中生成表确实不

R
中创建格式良好的表时遇到问题。我有90%的路要走,但不能一直走

我需要使用背景色为整个单元格着色,如下面的示例所示。我阅读了
kable
vignette,发现在html格式中,
background
不会给整个单元格着色。有没有办法绕过这个问题?我尝试将其设置为latex,但输出是latex,而不是显示在查看器中。我也是一个新手
markdown
用户,所以当我在那里尝试时,输出并不是我所希望的(这只是一个自包含的表)

我已经在SO上做了大量的搜索来寻找解决方案,但我一直没有找到它。在
R
中生成表确实不容易。任何帮助都将不胜感激

样本数据:

library(tidyverse)
df <- structure(list(Indicator = c("Var1", "Var2", "Var3", "Var4", "Var5"
), Sign = c(-1L, 1L, 1L, -1L, 1L), Freq = c("M", "A", "Q", "M", 
                                            "M")), row.names = c(NA, -5L), class = c("tbl_df", "tbl", "data.frame"))
df
# A tibble: 5 x 3
  Indicator  Sign Freq 
  <chr>     <int> <chr>
1 Var1         -1 M    
2 Var2          1 A    
3 Var3          1 Q    
4 Var4         -1 M    
5 Var5          1 M 

我简化了初始数据,使之清晰明了:

df <- tribble(~Indicator, ~Freq, ~cellColor,
              'Speed', 43.342, 'red',
              'Altitude', 44.444, 'blue',
              'Smartness', 0.343, 'green')
可以看出,匹配列和单元格大小很重要。作为一个例子,我把它们都制作成200px宽

结果是:


我不确定使用
kable
/
kableExtra
是否可以实现这一点,您可能需要看看。奇怪的是,即使在其他软件包中,这也是不可行的。我根据你的答案做了一个快速搜索,这甚至不能直接用css完成。我猜可能是html的问题吧。我想我需要学习降价。无论如何,这是目前最好的解决方案,所以我选择了正确的解决方案。谢谢你的帮助。
df <- tribble(~Indicator, ~Freq, ~cellColor,
              'Speed', 43.342, 'red',
              'Altitude', 44.444, 'blue',
              'Smartness', 0.343, 'green')
tbl <- df %>% 
  mutate(Indicator = cell_spec(Indicator, "html", color = "black", bold = T), 
         Freq = cell_spec(x = Freq, 
                           format = "html", 
                           color = "white", 
                           bold = T, 
                           extra_css = paste(paste('background-color', cellColor, sep = ': '), # combine background-color CSS rule with the observation vector value
                                             'display: inline-block', # extremely important CSS modifier for the span tag in the table cell
                                             'text-align: center', # text align
                                             'padding: 0px', # expand the field of text
                                             'margin: 0px', # expand the field of text
                                             'width: 200px', # future cell/column width
                                             sep = "; "), # CSS notation rule
                           )
  ) %>%
  select(-cellColor) %>% # exclude cellColor vector
  kable(format = "html", escape = F) %>%
  kable_styling(bootstrap_options = c("bordered", full_width = F, font_size = 16))

column_spec(tbl, 2, width = "200px") # set the column width as the cell width

tbl # print