全,

我正在try 在R Quarto中呈现一个带有包含特殊字符的标题的HTML表.通过在HTML中指定字符并将escape=FALSE传递到knitr::kable(),我可以正确地呈现表格.但是,最后一列中的列宽是基于原始字符的宽度,而不是最终呈现的字符数.

例如,下面的代码

#| eval: true

dof <- c(1, 2, 5, 10, 20, 50, 100, 1000, 10000)
df <- crossing(df1 = dof, df2 = dof) |> 
  mutate(fval = qf(0.05, df1, df2, lower.tail=FALSE)) |>
  pivot_wider(names_from=df2, values_from=fval)

knitr::kable(df, digits = 2, escape=FALSE,
    col.names=c("&nu;<sub>1</sub> / &nu;<sub>2</sub>", tail(colnames(df),-1)))

渲染为

Rendered table with first column width much wider than rendered content

由于列宽由原始字符&nu;<sub>1</sub> / &nu;<sub>2</sub>的数量而不是渲染字符v 1/v 2的数量决定:

Rendered table showing reason for extra wide first column

有没有一种方法可以使HTML列宽自动调整到呈现内容的大小?

谢谢,

肖恩

推荐答案

你可以试试reactable:

---
format: html
---

```{r}
library(dplyr)
library(tidyr)
dof <- c(1, 2, 5, 10, 20, 50, 100, 1000, 10000)
df <- crossing(df1 = dof, df2 = dof) |> 
  mutate(fval = qf(0.05, df1, df2, lower.tail=FALSE)) |>
  pivot_wider(names_from=df2, values_from=fval)

reactable::reactable(df, 
                     defaultColDef = reactable::colDef(
    format = reactable::colFormat(digits = 1),
    align = "center",
    minWidth = 70,
    headerStyle = list(background = "#f7f7f8")
  ),
                     columns = list(
  df1 = reactable::colDef(name = "&nu;<sub>1</sub> / &nu;<sub>2</sub>", html = TRUE)
))
```

enter image description here

Html相关问答推荐

如何通过将项目包裹在迪夫中来保持最右列的对齐方式来对齐项目?

如何删除html原生对话框的宽度

R中的动态Webscraping

如何只混合部分的背景而不是内容<>

纯CSS语音气泡与半透明背景和边框

CSS位置:固定尊重母公司的保证金属性.""'为什么?

如何使div按钮链接到另一个网页

Font Awesome 6插入符号未显示

放大缩小标题在外面的图像

如何修复与导航栏重叠的css网格?

让多对图像在各自的div中叠加

Django中的图像未从静态显示

现代网络浏览器可以并行下载哪些类型的网络资源?还有,什么东西不能并行下载?

使用`<;use>;`与`<;img>;`时呈现的SVG大小不同

仅 Select 悬停的级别,而不 Select 其父级或子级

配置了 HTML 视口的 Google Apps 脚本移动网络应用程序无法正确显示

我如何设置括号的样式,使它们不会挂在旁边的其他字符下面

如何在react 中向按钮添加禁用属性?

为什么 `html` 上的 overflow: hidden 将滚动框移动到正文?

是否有一种静态方式可以根据暗模式 Select 一张或另一张图像?