将 r 设置切换为在将文件保存到新子文件夹时不必创建目录

问题描述 投票:0回答:1

我有代码来创建新文件,将图形保存到新的子文件夹中,如下所示:

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,使其从不询问,而只是自动创建子文件夹?我说配置是因为我希望它始终适用于每个文件/项目。我见过其他解决方法,您可以告诉它创建一个带有函数的文件夹(如果尚未创建),但它会针对每个文件名/文件夹单独显示。我不想要这个,我更喜欢自动生成子文件夹的旧方法,因为我有太多不同的子文件夹/文件来一一执行此操作。

r file directory subdirectory
1个回答
0
投票

先检查目录是否存在,如果不存在则创建。

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)
}
© www.soinside.com 2019 - 2024. All rights reserved.