我在R中使用包“ htmlTable”,并试图格式化表格。具体来说,我想删除最上面的边框,并将其余边框更改为黑色。请运行下面的代码以获取我正在查看的表。
任何帮助将不胜感激!
doStuff
答案 0 :(得分:1)
我认为,您用来生成<html>
的方法限制了格式化的选项。以下是我对绝对控制样式应如何执行的建议。它还允许您使用w3schools之类的资源来修复完美的格式:
您的数据:
Code <- c("AB", "BC", "MB", "NB")
Numbers <- c(148137, 186955, 37755, 17376)
DataFrame <- data.frame(Code, Numbers, stringsAsFactors = FALSE)
names(DataFrame) <- c("Territory", "Number of People")
我使用该库来生成<html>
表。没有那么几行代码
和您一样,但也不缺乏灵活性。在这里,我使用
remotes
包:
remotes::install_github('trosendal/hlt')
library(hlt)
基本表结构和添加样式:
my_table <- hlt::html_table(DataFrame)
hlt::tag_attr(my_table) <- list(id = "table1", class = "gmisc_table")
桌子前后的小东西:
a <- html_p("Table 1. Test")
b <- html_p("<b>Source</b><br>[1] Test Source")
将表格像以前一样放在<div>
中:
my_table <- hlt::html_div(a +
my_table +
b)
hlt::tag_attr(my_table) <- list(style = "margin: 0 auto; display: table; margin-top: 1em;")
添加样式(与您的样式相同,再加上建议的更改)
head <- hlt::html_head(hlt::html_meta(charset="utf-8") +
hlt::html_meta("http-equiv" = "Content-type") +
hlt::html_meta("content" = "text/html") +
hlt::html_style(c(".gmisc_table {",
" width:150%;",
" border:1px solid black;",
" border-collapse:collapse",
"}",
".gmisc_table th {",
" border-bottom: 2px solid grey;",
" border-left: 1px solid black;",
" text-align: center;",
"}",
".gmisc_table tr:nth-child(even) {",
" background-color: #adadad;",
"}",
".gmisc_table tr:nth-child(odd) {",
" background-color: transparent;",
"}",
".gmisc_table td {",
" background-color: transparent;",
" text-align: center;",
" border-left: 1px solid black",
"}")))
将片段拼接成一页:
page <- hlt::html_html(head +
hlt::html_body(my_table))
tab <- tempfile()
capture.output(file = tab, print(page))
browseURL(tab)
目前尚不清楚您最终希望如何格式化 桌子要我删除了顶行并添加了所有黑色固体 否则边界。但我希望以此说明 方法提供了您可能需要的所有灵活性。我已开始 也使用htmlTable包在sva.se上制作表格 很快发现需求总是比需求复杂 编写html的R包中的功能。
答案 1 :(得分:0)
如果您了解基本的CSS,则可以轻松轻松地格式化表格中的任何元素:
x <- htmlTable(DataFrame, align = "c",
rnames = FALSE,
caption = "<b> <center> <font face = Times New Roman> Table 1. Test <br> <br>",
tfoot = "<b> Source </b> <br> [1] Test Source",
header = paste(c(" Territory", "Number of People")),
css.caption = "color:red;",
col.rgroup = c("none", "#ADADAD"),
padding.tspanner = "", ctable = TRUE)
## add id to gmisc_table
x <- gsub('(?<=.gmisc_table.)', ' id = \'gmisc_table\'', x, perl = TRUE)
formats <- paste(x)
attributes(formats) <- attributes(x)
## Edit css
css <- '
<style>
/* Remove the top border */
#gmisc_table > thead > tr > th {
border-top: none !important;
}
/* Add boarder to the table body */
#gmisc_table > tbody > tr > td {
border: 2px solid black;
}
</style>'
gsub('^', css, formats)