【发布时间】:2016-05-12 14:15:08
【问题描述】:
有人能解释一下为什么在下面的 Rmd 代码(使用 RStudio 生成 HTML 报告)中只显示 cat 命令吗?当我将cat 命令移到if 子句之外或将其注释掉时,将打印表格。我相信在使用 library(printr) 时也会发生同样的事情,但我还没有用最少的样本证实这一点。
似乎if 子句中的代码以某种方式被一起解释,而cat 与datatable 不匹配。
如果你能给我一些关于如何调试它的线索,那也会很有帮助。因为没有任何警告/错误消息。
---
title: "test"
output:
html_document
---
```{r}
if(TRUE){
DT::datatable(iris)
cat("I am here with my cat")
}
```
【问题讨论】:
-
隐式打印在 for 循环和 if 块中不起作用。在这些情况下,您需要使用
print (object)显式打印对象 -
对不起,我不明白.... print(DT::datatable(iris)) 不工作
-
这让我很吃惊。当我拿到电脑时,我将不得不看看这个。它可能与您的块选项有关。目前,您的代码返回控制台输出,
datatable可能需要一些帮助才能正确呈现 -
非常有趣。这个问题可以进一步概括:为什么带有隐式打印
DT::datatable(iris)的asis块可以工作,而print(DT::datatable(iris))却不行? (请注意,如果将cat放在DT::datatable(iris)之前,则问题中的代码有效,因为if返回它的最后一条语句,导致隐式打印数据表。) -
我不认为它仅限于“asis”。对我来说,猫是在数据表之前还是之后都没有关系......另外,如果我只是附加“i = 1”,也没有任何变化,即猫仍然可以工作但数据表没有
标签: r datatable knitr r-markdown