我在使用 R 中的 htmlTable 包更改标题背景颜色时遇到了一些问题。通过使用 css.cell 选项,我能够更改部分表头的颜色,但不是全部(运行代码片段)。
require(htmlTable)
mat <- matrix(1:20, ncol=5)
htmlTable(mat,cgroup = c("","Rank",""),n.cgroup = c(1,3,1),
header = LETTERS[1:5],
css.cell = rbind(rep("background: lightgrey;",
times=ncol(mat)),
matrix("", ncol=ncol(mat), nrow=nrow(mat))))
# Not Run
# x = htmlTable(mat,cgroup = c("","Rank",""),n.cgroup = c(1,3,1),
# header = LETTERS[1:5],
# css.cell = rbind(rep("background: lightgrey;",
# times=ncol(mat)),
# matrix("", ncol=ncol(mat), nrow=nrow(mat))))
# get the output
# as.character(x)
代码的输出结果如下
<table class='gmisc_table' style='border-collapse: collapse; margin-top: 1em; margin-bottom: 1em;'>\n
<thead>\n
<tr>\n
<th colspan='1' style='font-weight: 900; border-top: 2px solid grey; text-align: center;'></th>
<th style='border-top: 2px solid grey;; border-bottom: hidden;'> </th>\n
<th colspan='3' style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>Rank</th>
<th style='border-top: 2px solid grey;; border-bottom: hidden;'> </th>\n
<th colspan='1' style='font-weight: 900; border-top: 2px solid grey; text-align: center;'></th>\n</tr>\n
<tr>\n
<th style='background: lightgrey; border-bottom: 1px solid grey; text-align: center;'>A</th>\n
<th style='border-bottom: 1px solid grey;' colspan='1'> </th>\n
<th style='background: lightgrey; border-bottom: 1px solid grey; text-align: center;'>B</th>\n
<th style='background: lightgrey; border-bottom: 1px solid grey; text-align: center;'>C</th>\n
<th style='background: lightgrey; border-bottom: 1px solid grey; text-align: center;'>D</th>\n
<th style='border-bottom: 1px solid grey;' colspan='1'> </th>\n
<th style='background: lightgrey; border-bottom: 1px solid grey; text-align: center;'>E</th>\n</tr>\n</thead>\n
<tbody>\n
<tr>\n
<td style='text-align: center;'>1</td>\n
<td style='' colspan='1'> </td>\n
<td style='text-align: center;'>5</td>\n
<td style='text-align: center;'>9</td>\n
<td style='text-align: center;'>13</td>\n
<td style='' colspan='1'> </td>\n
<td style='text-align: center;'>17</td>\n</tr>\n
<tr>\n
<td style='text-align: center;'>2</td>\n
<td style='' colspan='1'> </td>\n
<td style='text-align: center;'>6</td>\n
<td style='text-align: center;'>10</td>\n
<td style='text-align: center;'>14</td>\n
<td style='' colspan='1'> </td>\n
<td style='text-align: center;'>18</td>\n</tr>\n
<tr>\n
<td style='text-align: center;'>3</td>\n
<td style='' colspan='1'> </td>\n
<td style='text-align: center;'>7</td>\n
<td style='text-align: center;'>11</td>\n
<td style='text-align: center;'>15</td>\n
<td style='' colspan='1'> </td>\n
<td style='text-align: center;'>19</td>\n</tr>\n
<tr>\n
<td style='border-bottom: 2px solid grey; text-align: center;'>4</td>\n
<td style='border-bottom: 2px solid grey;' colspan='1'> </td>\n
<td style='border-bottom: 2px solid grey; text-align: center;'>8</td>\n
<td style='border-bottom: 2px solid grey; text-align: center;'>12</td>\n
<td style='border-bottom: 2px solid grey; text-align: center;'>16</td>\n
<td style='border-bottom: 2px solid grey;' colspan='1'> </td>\n
<td style='border-bottom: 2px solid grey; text-align: center;'>20</td>\n</tr>\n</tbody>\n</table>
显然“\n”输出很烦人,但很容易管理。但是有人知道如何直接从 R 控制表头中的背景颜色吗?
我知道我可以通过将以下内容添加到 html 输出来手动调整 thead 样式:style="background-color: lightgrey;",但如果我可以直接从 R 获得所需的输出,那就太好了。
当我手动更改标题中的背景颜色时,这是我想要的表格输出:
<table class='gmisc_table' style='border-collapse: collapse; margin-top: 1em; margin-bottom: 1em;'>\n
<thead style="background-color: lightgrey;">\n
<tr>\n
<th colspan='1' style='font-weight: 900; border-top: 2px solid grey; text-align: center;'></th>
<th style='border-top: 2px solid grey;; border-bottom: hidden;'> </th>\n
<th colspan='3' style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>Rank</th>
<th style='border-top: 2px solid grey;; border-bottom: hidden;'> </th>\n
<th colspan='1' style='font-weight: 900; border-top: 2px solid grey; text-align: center;'></th>\n</tr>\n
<tr>\n
<th style='border-bottom: 1px solid grey; text-align: center;'>A</th>\n
<th style='border-bottom: 1px solid grey;' colspan='1'> </th>\n
<th style='border-bottom: 1px solid grey; text-align: center;'>B</th>\n
<th style='border-bottom: 1px solid grey; text-align: center;'>C</th>\n
<th style='border-bottom: 1px solid grey; text-align: center;'>D</th>\n
<th style='border-bottom: 1px solid grey;' colspan='1'> </th>\n
<th style='border-bottom: 1px solid grey; text-align: center;'>E</th>\n</tr>\n</thead>\n
<tbody>\n
<tr>\n
<td style='text-align: center;'>1</td>\n
<td style='' colspan='1'> </td>\n
<td style='text-align: center;'>5</td>\n
<td style='text-align: center;'>9</td>\n
<td style='text-align: center;'>13</td>\n
<td style='' colspan='1'> </td>\n
<td style='text-align: center;'>17</td>\n</tr>\n
<tr>\n
<td style='text-align: center;'>2</td>\n
<td style='' colspan='1'> </td>\n
<td style='text-align: center;'>6</td>\n
<td style='text-align: center;'>10</td>\n
<td style='text-align: center;'>14</td>\n
<td style='' colspan='1'> </td>\n
<td style='text-align: center;'>18</td>\n</tr>\n
<tr>\n
<td style='text-align: center;'>3</td>\n
<td style='' colspan='1'> </td>\n
<td style='text-align: center;'>7</td>\n
<td style='text-align: center;'>11</td>\n
<td style='text-align: center;'>15</td>\n
<td style='' colspan='1'> </td>\n
<td style='text-align: center;'>19</td>\n</tr>\n
<tr>\n
<td style='border-bottom: 2px solid grey; text-align: center;'>4</td>\n
<td style='border-bottom: 2px solid grey;' colspan='1'> </td>\n
<td style='border-bottom: 2px solid grey; text-align: center;'>8</td>\n
<td style='border-bottom: 2px solid grey; text-align: center;'>12</td>\n
<td style='border-bottom: 2px solid grey; text-align: center;'>16</td>\n
<td style='border-bottom: 2px solid grey;' colspan='1'> </td>\n
<td style='border-bottom: 2px solid grey; text-align: center;'>20</td>\n</tr>\n</tbody>\n</table>
额外的好处,如果有人知道如何摆脱“\n”输出,这也会非常有帮助
最佳答案
您可能需要考虑使用 tableHTML
,因为它增加了对 CSS 的完全控制。 tableHTML
使用管道运算符来链接命令。
使用您的数据:
library(tableHTML)
mat %>%
as.data.frame() %>%
#tableHTML is the main function that creates the html table
tableHTML(border = 0, rownames = FALSE,
second_header = list(c(1, 3, 1), c('', 'Rank', ''))) %>%
#the add_css family of functions add CSS to the corresponding
#parts of the table
add_css_thead(list(c('background-color'), c('lightgrey'))) %>%
add_css_table(list(c('text-align'), c('center'))) %>%
add_css_row(css = list('border-top', '2px solid black'), rows = 1) %>%
add_css_row(css = list('border-bottom', '1px solid black'), rows = 2) %>%
add_css_row(css = list('border-bottom', '2px solid black'), rows = 6) %>%
add_css_second_header(css = list('border-bottom', '1px solid black'), second_headers = 2)
这将产生您想要的表格,但不需要使用 hack 来修改 tablehtml 或任何其他包(或需要手动处理 /n
s):
如果您愿意,您仍然可以进一步修改它。还有在线教程here如果您有兴趣。
关于html - 使用 htmlTable 更改表标题颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41621213/