如何将内联R代码放入R Markdown网格表中?

v8wbuo2f  于 2023-05-04  发布在  其他
关注(0)|答案(1)|浏览(213)

我有以下Rmarkdown MWE。我用beamer编译它:

---
title: "Test"
output:
  beamer_presentation
---

# Test

## Hi

```{r, include=FALSE}
a=1
b=2
c=3
d=4

+-----+----------+---------+
| | Treated | Control |
+=====+==========+=========+
|age | r a | r c |
|educ | r b | r d |
+-----+----------+---------+


结果是这样的:表的格式不正确

![](https://i.stack.imgur.com/d4nUJ.png)
7vhp5slm

7vhp5slm1#

编辑以更正:
在Markdown中有很多不同的方法来生成表格,当包含R代码时,您选择的方法并不方便,因为垂直条需要在代码被其扩展替换后对齐。
在您的示例中,扩展是一个字符,例如,五个字符'r a'将被替换为一个字符,这将扰乱对齐。你可以添加四个空格,它几乎可以工作,但在你的例子中还有另一个问题:对于这种格式,您需要在每对行之间放置分隔符。这是可行的:

+-----+----------+---------+
|     | Treated  | Control |
+=====+==========+=========+
|age  | `r a`        | `r c`       |
+-----+----------+---------+
|educ | `r b`        | `r d`       |
+-----+----------+---------+

但是如果你把任何一个变量改成2位数的话就不行了。这是不方便的(也是丑陋的!),所以我不建议在R Markdown中使用这种表。(之前我错误地说它不支持;事实上,它是,但它仍然是相当无用的。)
有几种选择:

  • 使用knitr::kable()生成表e。g.
```{r, echo=FALSE}
tab <- cbind(c(a, b), c(c, d))
rownames(tab) <- c("age", "educ")
colnames(tab) <- c("Treated", "Control")
knitr::kable(tab, booktabs = TRUE)

* 使用与`kable`相同的格式:
TreatedControl
ager ar c
educr br d

相关问题