【问题标题】:slidify + data.table( ggplot2) error滑动 + data.table(ggplot2)错误
【发布时间】:2014-09-12 16:40:20
【问题描述】:

当我尝试在 slidify 中添加 (data.table/ggplot2) 代码时,出现错误。 这是我在 slidify 中的代码:

## data.table
```{r}
library(data.table)
DT = data.table(x = 1:5, y=6:10)
setkey(DT, x)
DT[J(1)] # Error: No J function
```
---
## ggplot2
```{r}
library(ggplot2)
a = b = shape = 1:5
ggplot(data=DT, aes(a, b, col=shape)) + geom_point() # Error: can not find object a
```

所有代码都可以在 slidify 之外运行,所以我猜想 slidify 的变量命名空间有问题。

我还找到了这个链接:data.table error when used through knitr, gWidgetsWWW,这可能与我的问题类似,但仍然不知道如何解决。

【问题讨论】:

  • 你能试试current development version吗?
  • 令我惊讶的是,它有效。我认为这是 slidify 的问题,导致 ggplot2 命令也无法运行。谢谢!
  • 有趣:我可以运行第一部分。但是 ggplot 命令会抛出错误## Error: Continuous value provided to discriminator
  • 第一部分在data.table 1.9.3版本中修复。 ggplot部分,你可以试试这个命令“ggplot(data=DT, aes(a, b, col=shape)) + geom_point()”吗?
  • 顺便说一句,“提供给离散刻度的连续值”这个错误消息来自 ggplot2,也许你需要更新你的包?我的 ggplot2 版本是 1.0.0。

标签: r ggplot2 data.table slidify


【解决方案1】:

只是添加一个答案以跟进问题的 cmets。 data.table 的开发版本修复了它,现在在 CRAN 上(data.table v1.9.4)。但这破坏了 knitr 中的 kable(),由 knitr v1.7(也在 CRAN 上)修复。

所以基本上,升级到最新的 CRAN 版本的 knitr 和 data.table 就可以了。如果没有,请告诉我们。


为好奇的人提供更多细节......

我在 v1.9.5 中对 data.table 进行了另一项更改,以使其对于评估用户代码(如 knitr、slidify 和 gWidgetsWWW)但不了解 data.table 本身的包更加健壮。这样他们以后就不需要知道了。这是项目:

knitr::kable() 无需从 knitr v1.6 升级到 v1.7 即可再次工作。评估用户代码并且不希望导入 data.table 的包需要添加到 data.table:::cedta.pkgEvalsUserCode 并且现在只有 eval 部分是 data.table-aware (此类包的其余代码是离开data.table-不知道)。 data.table:::cedta.override 现在为空,如果不需要,将被弃用。

这是 v1.9.4 中的项目,它在 knitr v1.6 和 knitr v1.7 修复(但不应该需要)中有点过于夸张并破坏了 knitr::kable:

向 data.table 白名单添加了闪亮、rmarkdown 和 knitr。将用户代码作为输入并在自己的环境中运行的包(因此不依赖或导入 data.table 本身)需要在此处添加,或者他们可以在其命名空间中定义一个变量 .datatable.aware

【讨论】:

    猜你喜欢
    • 2012-07-25
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多