我遇到了一种情况,我希望创建一个由三个分组变量构成的图.要做到这一点,我会简单地使用facet_grid(f1 ~ f2 + f3),但问题是f2的标签是多余的,并且让它们跨越f3嵌套的f3的方面会更好.
MWE:
library('tibble')
library('ggplot2')
df <- tribble(
~x, ~y, ~f1, ~f2, ~f3,
0.5, 0.5, "a", "a", "a",
0.5, 0.5, "b", "a", "a",
0.5, 0.5, "a", "b", "a",
0.5, 0.5, "b", "b", "a",
0.5, 0.5, "a", "a", "b",
0.5, 0.5, "b", "a", "b",
0.5, 0.5, "a", "b", "b",
0.5, 0.5, "b", "b", "b"
)
p <- ggplot(df, aes(x = x, y = y)) +
geom_point() +
facet_grid(f1 ~ f2 + f3)
Run Code Online (Sandbox Code Playgroud)
同样,我希望将f2的标签组合在一起,这样它们就不那么多余了.
编辑:这与其他问题的不同之处在于,它询问如何使用现有分组修改构面而不是添加新构图.
这可能是一个边缘情况,但我正在尝试使用knitr创建一个beamer演示文稿,我想使用不同的公式作为函数的参数来显示代码块.我发现使用叠加层时,代码块中的波形符号会消失.有没有办法让它们显示?
这是一个可重复性最小的例子:
\documentclass{beamer}
\begin{document}
\begin{frame}[fragile]
\frametitle{Slide with overlay}
\only<1>{
<<notilde, eval = FALSE>>=
myfunction(data, formula = ~ x)
@
}
\only<2>{
<<notilde2, eval = FALSE>>=
myfunction(data, formula = y ~ x)
@
}
\end{frame}
\begin{frame}[fragile]
\frametitle{Slide without overlay}
<<tilde, eval = FALSE>>=
myfunction(data, formula = ~ x)
@
\end{frame}
\end{document}
Run Code Online (Sandbox Code Playgroud)
演示文稿的第一帧如下所示:

任何帮助表示赞赏.
编辑:
没有叠加的幻灯片如下所示:

为了澄清,R包语言的语法<<...>>和@特定于R包knitr.这些符号之间的任何内容都由knitr解释为R代码块并转换为latex以包含语法突出显示.
这是在R中的访问器函数中使用callNextMethod()的扩展.
更新2017-03-25:为了说明这在加载方法时如何失败,而不是在构建的包中,我创建了一个虚拟包:https://github.com/zkamvar/inheritest#readme
我有一个继承另一个类foo的类栏,它们都有[method]的附加参数.foo的方法一致,但是第一次使用后bar的方法失败了.
Error in callNextMethod(x, i, j, ..., drop): bad object found as method (class "function")
4: stop(gettextf("bad object found as method (class %s)", dQuote(class(method))),
domain = NA)
3: callNextMethod(x, i, j, ..., drop) at #9
2: .local(x, i, j, ..., drop = drop)
1: BAR["x"]
Run Code Online (Sandbox Code Playgroud)
我有一个包实现了一个依赖于另一个包中的类的类.构建包时,一切正常,但是当我的包被简单地加载(使用devtools::load_all("."))时,我得到下面的行为.
foo <- setClass("foo", representation(x = "numeric", y = "numeric"))
bar <- setClass("bar", representation(distance = "numeric"), contains = "foo")
setMethod(f = "[", …Run Code Online (Sandbox Code Playgroud)