我正在编写一个大文件,该文件将引用几个“.R”代码脚本来读取大量已保存的数据集以创建一系列图表 . 我想避免将数据读入我的环境以最大限度地减少混乱(有很多文件) .

出于这个原因,我想引用一个数据集并将其管理到ggplot选项的“块”以创建我想要的美学等等 . 但是,似乎ggplot在第一层之后“忘记”管道数据集,我想找出是否有办法绕过这种行为 .

这里有关于SO(Referencing piped dataset in ggplot layers for subsetting)的类似问题,但对数据集的引用发生在"geom"步骤中,显式调用数据对象 . 奇怪的是,我没有使用其他问题的建议,但它们不能解决我的特定问题 .

特别是,我需要引用数据集以告诉ggplot要创建多少轴刻度(我希望数据通知此步骤,以便在将来数据发生变化时创建新轴,例如更多“年” “补充说 . 举个例子:

dataset <- data.frame(year = c("2014", "2015", "2016"), measure = c(10, 15, 20))

dataset %>% 
ggplot(aes(x = year, y = measure)) +
geom_bar(stat = "identity") +
scale_x_continuous(breaks = unique(.$year))

给出错误

Error in unique(.$year) : object '.' not found

管道在第一步中工作正常(显式地,'data = . ,...'),但引用了' . '的对象 . 是一个占位符,不适用于“下游”图层 .

通常我可以使用大括号{}来绕过这个问题(由于我不完全理解的原因),但这也不起作用:

dataset %>% 
ggplot(aes(x = year, y = measure)) +
geom_bar(stat = "identity") +
{scale_x_continuous(breaks = unique(.$year))}

我怀疑我可能对magrittr和ggplot太新了,无法完全理解为什么“%=>%and”“似乎不能很好地在一起玩,但是希望有人能够指出我正确的方向 . 谢谢!