Tôi có một tập lệnh R để lưu một số ô bằng cách sử dụng ggsave. Khi tôi chạy tập lệnh từ dòng lệnh, nó không chỉ lưu các ô của tôi mà còn tiết kiệm một tệp Rplots.pdf trống. Làm cách nào để ngăn R tạo tệp không cần thiết này?Cách dừng R khi tạo tệp Rplots.pdf trống khi sử dụng ggsave và Rscript
Dưới đây là một kịch bản ví dụ mà tái tạo các lỗi:
#!/usr/bin/env Rscript
# Code that creates unnecessary Rplots.pdf file
library(ggplot2)
my.data <- data.frame(x = 1:10, y = 1:10)
my.plot <- qplot(x, y, data = my.data)
ggsave('example.png', my.plot)
Tất cả những cách sau đây chạy kịch bản tạo ra các tập tin không cần thiết:
Rscript script.R
Rscript --vanilla script.R
chmod a+x script.R
./script.R
Ngoài ra, khi tôi nguồn mã từ bên trong một phiên tương tác, một cửa sổ R Graphics trống rỗng không cần thiết sẽ mở ra.
Hơn nữa, tôi không có những vấn đề nếu tôi sử dụng mã tiết hơn sau ở vị trí của ggsave:
#!/usr/bin/env Rscript
# Code that does NOT create unnecessary Rplots.pdf file
library(ggplot2)
my.data <- data.frame(x = 1:10, y = 1:10)
my.plot <- qplot(x, y, data = my.data)
png(file = 'example.png')
print(my.plot)
dev.off()
Dưới đây là thông tin phiên của tôi (đó là như nhau cho dù chạy Rscript hoặc tương tác):
R version 3.0.1 (2013-05-16)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=C LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] methods stats graphics grDevices utils datasets base
other attached packages:
[1] ggplot2_0.9.3.1
loaded via a namespace (and not attached):
[1] colorspace_1.2-2 dichromat_2.0-0 digest_0.6.3 grid_3.0.1
[5] gtable_0.1.2 labeling_0.1 MASS_7.3-26 munsell_0.4
[9] plyr_1.8 proto_0.3-10 RColorBrewer_1.0-5 reshape2_1.2.2
[13] scales_0.2.3 stringr_0.6.2
Nếu tôi chỉ định một chiều cao và chiều rộng trong 'ggsave' nó xuất hiện để khắc phục vấn đề của bạn, nhưng tôi thú nhận rằng tôi không biết tại sao ngay lập tức ... nếu tôi đã phải đoán đó là vì các giá trị mặc định là kích thước của "cửa sổ âm mưu hiện tại" cần phải tồn tại trước khi nó có thể đo được chúng. – joran
Tôi chạy 'ggsave' và nó không tạo ra 'RPlots.pdf', chỉ 'example.pdf'. 'ggsave' tương đối đơn giản trong chế độ' debug', bạn có thể thử và xem hàm 'device' đang gọi. –
Tôi thấy hành vi này và xác định các đối số chiều cao và chiều rộng dường như giải quyết cả hai trong một phiên tương tác và sử dụng RScript. – joran