我只是想根据我的课程“facet”构建我自己的打印方法。现在我想在调用ggplot
时创建一个特定的print
,但它会向我抛出错误消息
错误:ggplot2不知道如何处理类facetindicator的数据
代码
print.facet <- function(x) {
print("hello") # The print statement gets outputted fine
ggplot(data = x, aes( x = published, y = SMA90)) + geom_line()
}
使用相同的对象手动运行ggplot
但没有class
属性可以正常运行。我一定是错过了一些微不足道的东西,它会是什么?
答案 0 :(得分:2)
将对象传递给ggplot时可以删除facet类,或者更优雅地通过fortify方法删除facet类
fortify.facet <- function(x) {class(x) <- class(x)[-1]; x}
print.facet <- function(x) {
ggplot(data = x, aes( x = published, y = SMA90)) + geom_line()
}
d <- data.frame(published=1:10, SMA90=1:10)
class(d) <- c("facet", class(d))
print(d)
您还可以考虑定义as.data.frame.facet
和/或autoplot
方法,这些方法可能会更自然。