当我尝试使用此代码保存使用ggplot作为pdf制作的绘图时:
library(ggplot2)
file = "/data/mda/20150630-1Mb-full_comparison-low_depth_hTERT/result/comparison_figure/SD_rank_custom.csv"
figure_file = "/data/mda/20150604-1Mb-full_comparison-low_depth_hTERT/result/comparison_figure/SD_rank_custom.pdf"
sd_data <- as.data.frame(read.csv(file, header=TRUE))
# generate box plot
ggplot(
data=sd_data,
aes(
x=Experiment,
y=SD
)
)+
theme_bw() + #use bw theme
geom_boxplot(outlier.shape = NA) + #hide outlier points
geom_jitter() +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
ggsave(
filename=figure_file,
width=10,
height=10
)
我收到以下错误:
grDevices :: pdf(...,version = version)中的错误:
无法打开文件&#39; file.pdf&#39;
通话:ggsave - &gt;设备 - &gt;
执行暂停
我认为我的R版本最近更新为3.2.0,并且我已经确认它在v3.1.1中工作正常,因此我假设这与版本相关。我还确认我可以将csv文件写入目录。
任何想法如何解决这个问题?
答案 0 :(得分:3)
我认为你正在尝试写一个不存在的文件夹,据我所知,grDevices不会允许这样做。 Someone else似乎有类似的问题。
我在R 3.1.1和3.2.1中都尝试了你的代码 - 它们都给出了相同的错误(除非事先创建了目录。
您可以尝试添加以下代码行:
dir.create(file.path(dirname(figure_file)))
它将为您创建目录。
答案 1 :(得分:1)
我也一样,原来我已经在该目录中保存了一个同名的对象,显然没有被覆盖。
答案 2 :(得分:1)
当我的文件名太长时,我遇到了同样的错误 - 因此 Windows 中的路径名超出了允许的字母限制。缩短文件名解决了这个问题。
答案 3 :(得分:0)
Error in grDevices::pdf
的原因之一是写权限。适当的写权限应该可以解决此问题。 -chmod 777 -R dirname
答案 4 :(得分:0)
T面临相同的问题,并发现here()没有指向R脚本文件所在的正确目录。解决方案是,要么尝试将here()指向正确的目录,要么关闭\退出R studio并直接在R studio中打开脚本,即直接打开R studio,然后here()将自动指向同一目录关于脚本的内容。
答案 5 :(得分:0)
我在运行for循环以创建许多包含图表的pdf文件时遇到了这个错误。
对我来说,当我简单地关闭了先前打开的一个pdf文件以检查输出时,该错误已解决。 R抛出错误是因为我打开了文件,所以它不能覆盖它。这是造成此错误的另一个可能原因。