繁体   English   中英

slidify + data.table(ggplot2)错误

[英]slidify + data.table( ggplot2) error

当我尝试在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可能存在有关变量名称空间的问题。

我也找到此链接: 通过knitr,gWidgetsWWW使用时出现data.table错误,这可能与我的问题类似,但仍然不知道如何解决。

只是添加答案以跟进有关该问题的评论。 data.table的开发版已对其进行了修复,现在位于CRAN上(data.table v1.9.4)。 但这破坏了knitr kable()也在CRAN上)修复的knitr中的kable()

因此,基本上,升级到最新的Cnit版本的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-unware)。 data.table ::: cedta.override现在为空,如果不需要它将不推荐使用。

这是v1.9.4中的项目,该项目有点太过分了并且破坏了knitr v1.6和knitr v1.7中的knitr :: kable修复程序(但不必这样做):

在data.table白名单中添加了闪亮,rmarkdown和knitr。 需要将用户代码作为输入并在自己的环境中运行(因此不必自己依赖或导入data.table)的程序包,或者需要在此处添加,也可以在其名称空间中定义变量.datatable.aware <-TRUE,这样data.table可以在这些包中正常工作。 用户还可以使用assignInNamespace()将自己添加到data.table的白名单中,但是上游的这些添加使这些软件包无需这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM