gpt4 book ai didi

r - 用knitr将两个data.frame彼此对齐?

转载 作者:行者123 更新时间:2023-12-04 05:18:36 26 4
gpt4 key购买 nike

我是knitr的新手(也是R的新手),所以这可能是一个愚蠢的问题...

我有两个data.frames,它们都有两列,但行数不同。我想在编织报告中显示它们,但是当它们可以很容易地彼此相邻放置时,在另一个狭窄的 table 下面放一个狭窄的 table 看起来并不好。
有什么办法可以将它们彼此相邻显示?

更新

好的,根据以下建议,这是我的工作(我现在将三张 table 放在一起):

```{r fig.height=13.5, fig.width=10, echo=FALSE, comment=""}
grid.arrange(textGrob("Visual Clusters", gp=gpar(fontsize=14, fontface="bold")),
textGrob("We have biofilm data for...", gp=gpar(fontsize=14, fontface="bold")),
textGrob("Left Over Isolates", gp=gpar(fontsize=14, fontface="bold")),
tableGrob(clusters, show.rownames=FALSE, gp=gpar(fontsize=10)),
tableGrob(clust_ab, show.rownames=FALSE, gp=gpar(fontsize=10)),
tableGrob(n_clust, show.rownames=FALSE, gp=gpar(fontsize=10)),
ncol=3, nrow=2, heights=c(1,30))
```

这看起来已经非常不错了,三个表的标题都没有编号行。
到目前为止,我唯一无法解决的问题是所有 table 都水平居中,因此,如果您知道我的意思,则较短的 table 会从最长的 table 开始。

最佳答案

Knitr的开发版本(on Github;请遵循那里的安装说明)具有kable()函数,该函数可以将表作为字符向量返回。您可以收集两个表并将它们安排在父表的两个单元格中。这是一个简单的示例:

```{r two-tables, results='asis'}
library(knitr)
t1 = kable(mtcars, format='html', output = FALSE)
t2 = kable(iris, format='html', output = FALSE)
cat(c('<table><tr valign="top"><td>', t1, '</td><td>', t2, '</td><tr></table>'),
sep = '')
```

您还可以使用 style="float: [left|right]"之类的CSS技巧来将表格向左/向右 float 。

如果要设置单元格填充和间距,则可以照常使用表格属性 cellpadding/ cellspacing,例如
```{r two-tables, results='asis'}
library(knitr)
t1 = kable(mtcars, format='html', table.attr='cellpadding="3"', output = FALSE)
t2 = kable(iris, format='html', table.attr='cellpadding="3"', output = FALSE)
cat(c('<table><tr valign="top"><td>', t1, '</td>', '<td>', t2, '</td></tr></table>'),
sep = '')
```

有关上面的代码,请参见 RPubs post

关于r - 用knitr将两个data.frame彼此对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17717323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com