首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >slidify + data.table( ggplot2)错误

slidify + data.table( ggplot2)错误
EN

Stack Overflow用户
提问于 2014-09-13 00:40:21
回答 1查看 396关注 0票数 2

当我尝试在slidify中添加(data.table/ggplot2)代码时,我得到了错误。下面是我在slidify中的代码:

代码语言:javascript
复制
## data.table
```{r}

库(data.table)

DT = data.table(x = 1:5,y=6:10)

setkey(DT,x)

DTJ(1) #错误:没有J函数

代码语言:javascript
复制
---
## ggplot2
```{r}

库(Ggplot2)

A=b=形状= 1:5

ggplot(data=DT,aes(a,b,col=shape)) + geom_point() #错误:找不到对象a

代码语言:javascript
复制

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

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

EN

回答 1

Stack Overflow用户

发布于 2014-10-21 02:26:44

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

因此,基本上,升级到最新的CRAN版本的knitr和data.table,你应该会很好。如果没有,请告诉我们。

更多细节给好奇的人...

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

无需从

v1.6升级到v1.7,kable()就可以再次工作。评估用户代码并且不希望导入data.table的包需要添加到data.table:::cedta.pkgEvalsUserCode中,现在只有eval部分是data.table感知的(包的其余代码是data.table感知的)。data.table:::cedta.override现在是空的,如果不需要它,它将被弃用。

这里是v1.9.4中的项目,它有点太过了,并且破坏了netrv1.6和netrv1.7修复中的kable::kable(但不需要这样做):

在data.table白名单中添加了shiny、rmarkdown和knitr。将用户代码作为输入并在自己的环境中运行的包(因此不依赖或导入data.table本身)需要在此处添加,或者它们可以在其名称空间中定义一个变量.datatable.aware <- TRUE,以便data.table可以在这些包中正常工作。用户也可以使用assignInNamespace()自己添加到data.table的白名单中,但是上游的这些添加消除了对这些包执行此操作的需要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25812961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档