我爱上了htmlTable()
包中的Gmisc
函数。我的桌子比以前漂亮得多。在我的表中,我有一个列有相当大的条目,我很难保持足够宽,数字不会换行。我可以想象一个nowrap
参数列或column.width
参数可以用于此,但我似乎也找不到。有没有办法做到这一点?或者我应该满足于“相当不错”?
答案 0 :(得分:4)
我知道我参加派对有点晚了,但这里有几种方法可以解决。为了记录,有很多方法可以调整这些表格,使它们看起来完全符合您的需要。所以IMO的选择是1)为每个单元格着色选项,单元格高度和宽度,行高和宽度,列高和宽度等提供各种参数;或2)让用户想出一些东西。
这里说的是一些可能的解决方案:
library(Gmisc)
## solution 1: quick, dirty
tbl <- `colnames<-`(matrix(1:9, 3, 3), c('one','two','three'))
(tmp <- htmlTable(tbl))
tbl[1,1] <- 'this is a very long cell, this is a very long cell, this is a very long cell, this is a very long cell'
(tmp <- htmlTable(tbl))
tbl[1,1] <- gsub(' ', ' ', tbl[1,1])
htmlTable(tbl)
基本上只是折叠任何空格并使用nbsp而不是
下一个解决方案实际上使用了一些合法的HTML标签:
## solution 2:
tbl <- `colnames<-`(matrix(1:9, 3, 3), c('one','two','three'))
tbl[1,1] <- 'this is a very long cell, this is a very long cell, this is a very long cell, this is a very long cell'
(tmp <- htmlTable(tbl))
(tmp <- gsub('<td', '<td nowrap="nowrap"; ', tmp))
上面的解决方案将所有单元格样式(td)替换为包含nowrap的样式。替换所有单元格可能是你想要的,也可能不是你想要的,这让我有了下一个选择:正则表达式
## solution 3: regex
tbl <- `colnames<-`(matrix(1:9, 3, 3), c('one','two','three'))
tbl[1,1] <- 'this is a very long cell, this is a very long cell, this is a very long cell, this is a very long cell'
(tmp <- htmlTable(tbl))
regmatches(tmp, gregexpr('<td.*?</td>', tmp))
# [[1]]
# [1] "<td style='text-align: left;'>this is a very long cell, this is a very long cell, this is a very long cell, this is a very long cell</td>"
# [2] "<td style='text-align: center;'>4</td>"
# [3] "<td style='text-align: center;'>7</td>"
# [4] "<td style='text-align: left;'>2</td>"
# [5] "<td style='text-align: center;'>5</td>"
# [6] "<td style='text-align: center;'>8</td>"
# [7] "<td style='border-bottom: 1px solid grey; text-align: left;'>3</td>"
# [8] "<td style='border-bottom: 1px solid grey; text-align: center;'>6</td>"
# [9] "<td style='border-bottom: 1px solid grey; text-align: center;'>9</td>"
我没有继续下去,因为我觉得上面的其中一个很合适,正则表达式不是我的强项(也不是html或css)。
我确定还有其他类似的选项。例如,您可以尝试在列标记中插入宽度标记。
答案 1 :(得分:1)
埋入CRAN https://cran.r-project.org/web/packages/htmlTable/htmlTable.pdf中的“ addHtmlTableStyle”下的“ css.cell参数”下: 如果css.cell是向量,则假定样式应在所有行中重复(即css.cell中的每个元素都指定整个“ x”列的样式)。
所以:
library("htmlTable")
library("tidyverse")
myDf <- data.frame(x=1:5, y=6:10)
myDf %>%
addHtmlTableStyle(css.cell = c("width: 50;","width: 100;")) %>%
htmlTable()
htmlTable CRAN文档中的“ css.cell参数”部分还介绍了如何控制每个表单元格的样式。