Как создать цикл для открытия, изменения и сохранения файлов .csv с помощью R? - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть несколько файлов .csv, которые необходимо переформатировать и снова сохранить, используя сценарий R.Функция, необходимая для внесения изменений и переформатирования файлов, уже установлена ​​и работает отлично.Но так как всегда есть много документов, которые нужно изменить, я хотел бы иметь for lLoop, чтобы мне не приходилось адаптировать свой код для каждого отдельного документа.Но, к сожалению, у меня пока нет опыта использования циклов с использованием R.

В данный момент мой код выглядит так:

setwd("C:/users/Desktop/Raw/.")
df <- read.csv("A1.csv", sep= ",")
new_df <- wrap_frame(df, nr = 61, rownames = "", unique_names = FALSE)
write.csv(new_df, "C:/users/Desktop/Data/A1.csv", row.names = FALSE)

Исходные файлы .csv всегда называютсятаким же образом с буквой (от A до Z), за которой следует число от 1 до 12. Число файлов .csv, которые нужно изменить, может адаптироваться.Но их имена всегда следуют упомянутым правилам.

Буду очень признателен, если кто-нибудь сможет мне помочь с этим вопросом!

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Вы можете получить вектор со всеми именами файлов, которые существуют в вашей папке (так как эта папка не содержит других файлов, кроме тех, которые вы хотите редактировать) с помощью

setwd( "C:/users/Desktop/Raw/" )
files <- Sys.glob( "*.csv" )

, а затем обработать их одно за другим с помощью

for( i in files )
{
    df <- read.csv( i )
    new_df <- wrap_frame(df, nr = 61, rownames = "", unique_names = FALSE)
    write.csv(new_df, paste( "C:/users/Desktop/Data/", i, sep = "" ), row.names = FALSE)
}
0 голосов
/ 26 декабря 2018

Попробуйте:

# vector of file names
my.files <- paste0(c(outer(LETTERS, 1:12, FUN = "paste0")),
                   ".csv")
# for loop
for (i in seq_along(my.files)) {
        df <- read.csv(my.files[i], sep= ",") # open
        new_df <- wrap_frame(df, nr = 61, rownames = "", unique_names = FALSE) # mutate
        write.csv(new_df, paste0("C:/users/Desktop/Data/", my.files[i]),
                  row.names = FALSE) # save
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...