我一直在使用带有R基本图形和tikz输出的knitr一段时间,并且想要尝试一下ggplot2
.但是,这个最小的例子无法使用knitr 1.0.5产生任何输出:
\documentclass{article}
\begin{document}
<<dev = 'tikz'>>=
library(ggplot2)
d = data.frame(a = c(1, 2, 3), b = c(4, 5, 6), c = c(7, 8, 9))
ggplot(d, aes(a, b, color = c)) + geom_point()
@
\end{document}
Run Code Online (Sandbox Code Playgroud)
相反,它失败了Error in UseMethod("depth"): no applicable method for 'depth' applied to an object of class "NULL"
.在R中执行代码或选择png设备将产生预期的图形.省略颜色美学或c
使用tikzDevice进行因子分解工作,因此连续色标似乎是个问题.
有什么我做错了,还是那个错误?
我刚才读到,在C++ 11标准版本中,异常规范已被弃用.我以前认为指定你的功能可能是好的做法,但显然,不是这样.
在阅读了Herb Stutter引用得很好的文章之后,我不禁要问:为什么实际上是按照它们的方式实现了异常规范,为什么委员会决定弃用它们而不是在编译时检查它们?为什么编译器甚至允许抛出一个未出现在函数定义中的异常?对我来说,这听起来像是在说"你可能不应该指定你的函数返回类型,因为当你指定时int f()
,但return 3.5;
在它内部,你的程序可能会崩溃." (即强类型的概念差异在哪里?)
(由于typedef
s中缺少异常规范支持,假设模板语法可能是Turing-complete,实现这个听起来很容易.)
使用C++ 11的强类型enum
,可以声明类的成员枚举,如下所示:
class X {
public:
enum class E;
};
enum class X::E { a, b };
Run Code Online (Sandbox Code Playgroud)
但是,在制作X
类模板时:
template <typename T>
class X {
public:
enum class E;
};
template <typename T>
enum class X<T>::E { a, b };
Run Code Online (Sandbox Code Playgroud)
gcc 4.7.2和clang 3.0都抱怨"错误:'枚举X :: E'是枚举模板[-pedantic]"和"错误:枚举不能是模板".我认为相关的标准部分(事实上,这个问题来自于)是§14模板,其中第一段规定:
该声明在模板声明应
- 声明或定义函数或类,或
- 定义成员函数,成员类,成员枚举或类模板或嵌套在类模板中的类的静态数据成员,或者
- 定义类或类模板的成员模板,或
- 是一个别名声明.
(强调我的).这是一个编译器错误,还是我完全错误地解释了这个语句?