Правильная формулировка для цикла для преобразования всех файлов.dta в.csv в каталоге

Итак, у меня есть один экземпляр преобразования dta в csv, и мне нужно повторить его для всех файлов в каталоге. Отличная помощь на SO, но я все еще не совсем там. Вот единственный случай

#Load Foreign Library
library(foreign)

## Set working directory in which dtw files can be found)
setwd("~/Desktop")

## Single File Convert
write.csv(read.dta("example.dta"), file = "example.csv")

Отсюда, я полагаю, я использую что-то вроде:

## Get list of all the files
file_list<-dir(pattern = ".dta$", recursive=F, ignore.case = T)

## Get the number of files
n <- length(file_list)

## Loop through each file
for(i in 1:n) file_list[[i]]

Но я не уверен в правильном синтаксисе, выражениях и т. Д. После обзора великолепных решений, приведенных ниже, я просто запутался (не обязательно получаю ошибки) и собираюсь сделать это вручную - быстрые советы по изящному способу прохождения каждый файл в каталоге и конвертировать его?

Рассмотренные ответы включают в себя:

Конвертировать.dta файл Stata в CSV без программного обеспечения Stata

применение подготовленного R-скрипта для одного файла к нескольким файлам в каталоге

Чтение нескольких файлов из каталога, R

СПАСИБО!!

Получил ответ: вот окончательный код:

## CONVERT ALL FILES IN A DIRECTORY

## Load Foreign Library
library(foreign)

## Set working directory in which dtw files can be found)
setwd("~/Desktop")

## Convert all files in wd from DTA to CSV
### Note: alter the write/read functions for different file types.  dta->csv used in this specific example

for (f in Sys.glob('*.dta')) 
  write.csv(read.dta(f), file = gsub('dta$', 'csv', f))

1 ответ

Решение

Если файлы находятся в вашем текущем рабочем каталоге, одним из способов будет использование Sys.glob чтобы получить имена, затем зациклите этот вектор.

for (f in Sys.glob('*.dta')) 
    write.csv(read.dta(f), file = gsub('dta$', 'csv', f))
Другие вопросы по тегам