Я пытаюсь использовать циклы для упорядочения некоторого кода, чтобы я мог анализировать множество наборов данных в папке без необходимости писать новый код для каждого набора.
Цель этого кода - загрузить в каждый файл .csv из папки в свой собственный фрейм данных с соответствующими именами.
#Define the path to the folder containing the data sets
folder <- "Volumes/DataHD/Folder/"
#Make a list of the files within that folder
files <- list.files(path = folder)
#Define the desired names of each dataframe
names <- c("A1", "A2", "A3")
#Set working directory to that folder
setwd(folder)
#Use a for loop to load each .csv file into its own dataframe
i = 1
for(theFile in files){
name[i] <- read.csv(theFile)
i = i + 1
}
Однако вместо создания трех фреймов данных с именами «A1», «A2» и «A3» этот код просто изменяет содержимое списка «имен», чтобы каждый объект в списке был одним из моих желаемых фреймов данных.
Теперь я понимаю, что эти попытки обходного пути были безрассудными sh, но я также попытался:
i = 1
for(theFile in files){
toString(name[i]) <- read.csv(theFile)
i = i + 1
}
, которая выдает ошибку "не удалось найти функцию" toString <- "". И: </p>
i = 1
for(theFile in files){
c <- toString(name[i])
c <- read.csv(theFile)
i = i + 1
}
, который просто превращает c в кадр данных. Исторически, я бы просто сделал что-то вроде:
"A1" <- read.csv("Volumes/DataHD/Folder/LongNameA1.csv"
"A2" <- read.csv("Volumes/DataHD/Folder/LongNameA2.csv"
"A3" <- read.csv("Volumes/DataHD/Folder/LongNameA3.csv"
Но реальный сценарий включает в себя множество наборов данных, и я стараюсь избегать необходимости постоянно перепечатывать или копировать вставки. Есть ли способ сделать sh что я пытаюсь сделать? Или я должен использовать совершенно другой подход и попытаться решить его с помощью массивов?
Редактировать: Каждый нужный фрейм данных имеет разное количество строк, на случай, если это повлияет на ваш совет.