【问题标题】:Knitr and kable not finding data frameKnitr 和 kable 找不到数据框
【发布时间】:2015-06-02 19:12:13
【问题描述】:

我正在尝试在 knitr 中的 word 文档中显示一个简单的表格。我有以下代码:

library(knitr)
a<-c(1,2,3,4,5,6)
b<-c(1,2,3,4,5,6)
tab<-data.frame(a,b)

在控制台中正确运行

knitr::kable(tab)

但是,当放入名为“medinventory”的降价文档时,代码无法正常运行并返回以下错误:

````{r echo=FALSE,results='asis'}
knitr::kable(tab)
````  

processing file: medinventory.Rmd
|......................                                           |  33%
ordinary text without R code

|...........................................                      |  67%
label: unnamed-chunk-1 (with options) 
List of 2
$ echo   : logi FALSE
$ results: chr "asis"


Quitting from lines 17-18 (medinventory.Rmd) 
Error in is.data.frame(x) : object 'tab' not found
Calls: <Anonymous> ... eval -> eval -> <Anonymous> -> colnames ->                              
is.data.frame
Execution halted

所以数据框在 globalEnvr 中却没有被 markdown 识别?我将不胜感激任何相关问题的链接以及答案。

【问题讨论】:

  • 为什么不将数据框创建添加到markdown代码中呢?这不仅应该有效,而且如果您需要再次生成输出,它实际上使 Rmarkdown 可重现。
  • Molx 所说的。您想在 knitr 代码块中使用的任何 R 对象都需要在代码块中创建。
  • 太棒了。感谢@Molx 的提示。为什么 mtcars 不是这种情况?
  • mtcarsdatasets 包中可用的数据集之一,该包加载了基础 R。例如,其他是 irisairquality。您可以使用library(help = "datasets")查看完整列表。

标签: r knitr


【解决方案1】:

感谢@Molx 的回答,感谢@D.Mercer 的cmets。降价代码中的所有内容。

```{r echo=FALSE,results='asis'}
library(knitr)
a<-c(1,2,3,4,5,6)
b<-c(1,2,3,4,5,6)
tab<-data.frame(a,b)
knitr::kable(tab)
```

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。在前一个代码块中创建的对象可以被下一个访问。您遇到的问题是因为您可能忘记定义 tab 对象,或者之前的代码没有运行,这与 @D.Mercer 的建议相反。

    【讨论】:

    • 请对此类建议使用评论,如果您没有足够的观点,请不要这样做。如果您要添加答案,请给出正确的描述和参考示例。请先看这个how-to-answer
    猜你喜欢
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 2021-10-04
    • 2018-10-14
    • 2021-11-11
    • 2015-10-29
    相关资源
    最近更新 更多