Rで複数のcsvファイルに対してforループを実行しようとしましたが、ループは最初のファイルに対してのみ実行されます。
csv ファイルをインポートしてから、データの分析が保存される各 csv ファイルのディレクトリを作成したいと考えています。ディレクトリを作成した後、コードを実行するたびにそれを作業ディレクトリとして設定することに問題があります。ファイルが 1 つだけの場合はコードが正常に動作しますが、for ループを使用すると失敗します。
コード:
## Setting the working directory and path
setwd("path")
path <- "path"
##to extract the filename from each path
files <- list.files(path=path, pattern="*.csv")
for(file in files)
{
temp <- which(strsplit(file, "")[[1]]==".")
assign(
gsub(" ","",substr(file, 1, temp-1)),
read.csv(paste(path,file,sep="")))
}
##To create a new directory for each file and set that as the new working directory.
for(i in seq(1, length(files), by = 1)){
fileName <- read.csv(files[i])
base <- strsplit(files[i], ".csv")[[1]]
dir <- dir.create(paste(path,base, sep = "/"))
setwd(getwd(dir))
新しく設定された作業ディレクトリに保存された結果によるさらなる分析。
変数の作成
Date_Time <- strptime(fileName$Date...Time, format = "%d/%m/%Y %H:%M")
fileName$month <- months(Date_Time,abbreviate = TRUE) #creates month column (char)
fileName$julian <- Date_Time$yday #creates julian day column
fileName$year <- Date_Time$year + 1900 #creates year column
fileName$hour <- Date_Time$hour #creates hour column
fileName$weeknum <- round(Date_Time$yday/7,0)
fileName$numericdate <- fileName$year+fileName$julian/366 #numeric value of date
#Identify and remove empty columns
fileName <- as.data.table(fileName)
fileName <- fileName[,which(unlist(lapply(fileName, function(x)!all(is.na(x))))),with=F]
dim(fileName) # to check if empty columns have been eliminated
head(fileName) #to find appropriate column name for PM10 data
PM10 <- fileName$PM10_BAM #substitue in a common variable for further calculations
fileName$PM10_BAM <- as.numeric(as.character(PM10))
##to view basic seasonal pattern through the data
df_eve <- subset(fileName, hour>=18)
jpeg(file = "seasonal pattern observed in the evenings.jpg")
with(df_eve, boxplot(PM10_BAM ~ weeknum, main = "seasonal pattern observed in the evenings", xlab = "weeknum", ylab = "PM10", outline = FALSE, na.rm = T))
dev.off()
}
Errors:
Error in file(file, "rt") : cannot open the connection In addition: Warning messages:
1: In dir.create(paste(path, base, sep = "/")) :
'/Users/ayushikachhara/Desktop/Work/CSV//EW_Matamata' already exists
2: NAs introduced by coercion
3: In file(file, "rt") :
cannot open file 'EW_Ngaruawahia.csv': No such file or directory
EW_Matamata と EW_Ngaruawahia は、最初に設定された作業ディレクトリ内のファイルです。しかし、それらをインポートしてからディレクトリを変更したため、3 番目のエラー メッセージが表示され続ける理由がわかりません。
私は学習段階にあるので、どんな助けも大歓迎です:)