我有代码来创建新文件,将图形保存到新的子文件夹中,如下所示:
library(tidyverse)
library(ggplot2)
carb_list = unique(mtcars$carb)
iterate = function(z){
df = mtcars |> filter(carb == z)
df |>
ggplot(aes(x=cyl,y=mpg)) + geom_point()
ggsave(filename = paste0("new/carb",z,"/plot.png"))
}
sapply(carb_list, iterate)
但是,每次运行时,我都必须批准创建新的子文件夹,因为我在控制台中收到此提示:
Cannot find directory new/carb4.
ℹ Would you like to create a new directory?
以前从来没有出现过这种情况,因为它会自动为我创建一个新的子文件夹,而不需要手动批准。但在最近的 r 更新 [4.3.3(天使食物蛋糕)] 中,现在每次都需要这个。
有没有办法配置 r,使其从不询问,而只是自动创建子文件夹?我说配置是因为我希望它始终适用于每个文件/项目。我见过其他解决方法,您可以告诉它创建一个带有函数的文件夹(如果尚未创建),但它会针对每个文件名/文件夹单独显示。我不想要这个,我更喜欢自动生成子文件夹的旧方法,因为我有太多不同的子文件夹/文件来一一执行此操作。
先检查目录是否存在,如果不存在则创建。
iterate <- function(z) {
df <- mtcars |> filter(carb == z)
df |>
ggplot(aes(x = cyl, y = mpg)) +
geom_point()
outfile <- paste0("new/carb",z,"/plot.png")
outdir <- dirname(outfile)
if(!dir.exists(outdir)) dir.create(outdir, recursive = TRUE)
ggsave(filename = outfile)
}