在R中的不同子目录中创建相同的文件夹



我试图在R的多个子目录中创建相同的文件夹。我以为我可以用for循环来完成这项工作,但它没有按计划进行

我的文件夹结构如下:Main directory/Weather_day。Weather_day包含文件夹D0和D1。我想在D0和D1中创建天气和温度文件夹

它试图用for loop 这样做

pathway = "./Weather_day"
for (i in pathway){
setwd(i)
dir.create("weather")
dir.create("temperature")
}

但是,这样做的结果是在主目录文件夹中创建文件夹。此外,我不能运行此代码两次或两次以上,因为它会更改工作目录。

有什么解决方案吗?提前感谢

试试这个。您应该循环浏览所有子目录。您的"./Weather_day"是不够的。

setwd("./Weather_day")
pathway <- list.files(full.names = F)
for (i in pathway){
dir.create(paste0(i,"/weather"))
dir.create(paste0(i,"/temperature"))
}

目录树前后的情况:之前

weather_day
├── D0
└── D1

之后

weather_day
├── D0
│  ├── temperature
│  └── weather
└── D1
├── temperature
└── weather

我建议Weather_day文件夹已经创建。根据你的意见,我的建议如下。

此外,函数还提供了额外的用途,例如,如果将来你有一个额外的文件夹,你可以简单地用函数添加它。

wd = getwd()
pathway = paste0(wd,"/Weather_day/")
dir.create(pathway)

create_dir = function (x) {
for (i in x){
if(!dir.exists(paste0(pathway, i))){dir.create(paste0(pathway, i))}
}}

create_dir(c("weather","temperature"))

我检查了代码,使用if语句可以防止覆盖现有的文件夹,我强烈建议这样做。但这取决于用例。

编辑

关于你的意见,我调整了我的建议。我不确定这是否正是你想要的:

pathway = paste0(getwd(),"/Weather_day/")
d = c("D0","D1")
x = c("weather", "temperature")
create_dir = function (d, x) {
for (i in d){
if(!dir.exists(paste0(pathway, i))){dir.create(paste0(pathway, i))}
for (j in x){
if(!dir.exists(paste0(pathway, i, "/", j))){dir.create(paste0(pathway, i, "/", j))}
}}}
create_dir(d,x)

通过上面的代码,您可以获得文件夹D0和D1中的每个文件夹的天气和温度。

相关内容

  • 没有找到相关文章

最新更新