ฉันจะแปลงไฟล์ XLSX จำนวนมากเป็นไฟล์ CSV จำนวนมากโดยใช้ NESTED FOR LOOPS ใน R ได้อย่างไร

ฉันพยายามแปลง .xlsx จำนวนมากให้เป็น .csv จำนวนมาก

ก่อนอื่น ฉันสร้างรายการที่มี .xlsx ทั้งหมดที่ต้องการแปลง

> especies
 [1] "Aburria jacutinga.xlsx"       "Acrobatornis fonsecai.xlsx"   "Alectrurus tricolor.xlsx"    
 [4] "Amadonatur lacernulatus.xlsx" "Amazona pretrei.xlsx"         "Amazona rhodocorytha.xlsx"   
 [7] "Amazona vinacea.xlsx"         "Anodorhynchus leari.xlsx"     "Anthus nattereri.xlsx"       
[10] "Antilophia bokermanni.xlsx"

จากนั้น ฉันแก้ไของค์ประกอบเพื่อไม่ให้มีช่องว่างในชื่อและสร้างเวกเตอร์อื่นขึ้นมา มันจบลงเช่นนี้:

> nomes_
 [1] "Aburria_jacutinga"       "Acrobatornis_fonsecai"   "Alectrurus_tricolor"     "Amadonatur_lacernulatus"
 [5] "Amazona_pretrei"         "Amazona_rhodocorytha"    "Amazona_vinacea"         "Anodorhynchus_leari"    
 [9] "Anthus_nattereri"        "Antilophia_bokermanni"  

จากนั้นฉันลองทำสิ่งต่อไปนี้สำหรับลูปเพื่อแปลงไฟล์ .xlsx แต่ละไฟล์เป็นไฟล์ .csv:

for (file in especies){
  xlsx_objeto<- readWorksheetFromFile(file=file, sheet=1, keep=c(2,3,4,6,7,8,9,10,13,18))
  for( j in nomes_){
    write.csv(xlsx_objeto,file=paste0("./csv/",j,".csv"))
  }
}

สิ่งที่ฉันมีคือไฟล์ .csv หนึ่งไฟล์สำหรับแต่ละองค์ประกอบใน nomes_ ไม่เป็นไร. แต่ภายในไฟล์ .csv เหล่านี้จะเหมือนกันทุกประการ ทั้งหมดมีข้อมูลจากไฟล์ .xlsx สุดท้ายในรายการ especies


person Tiago    schedule 30.01.2015    source แหล่งที่มา


คำตอบ (1)


ในที่สุดฉันก็จัดการมันได้ นี่มันเป็นรหัส ขออภัยความคิดเห็นเป็นภาษาโปรตุเกส

library('XLConnect')
library('foreach')
# Cria uma lista com todos os arquivos em xlsx
especies<-list.files(pattern = "\\.xlsx$")
# Eliminar algum arquivo indesajado que esteja na pasta
especies<-especies[-c(1:41)]
## Cria um vetor que contenha os nomes desejados para serem os nomes dos arquivos finais.
# Retira a extensão ".xlsx"
nomes<-gsub(pattern=".xlsx",replacement="",especies)
# Substitui todo espaço por "_"
nomes_<-gsub(pattern=" ",replacement="_",nomes)
# Retira todo "." Atenção se quiser substituir pontos ".", estes devem estar entre colchetes assim: "[.]"
nomes_<-gsub(pattern="[.]",replacement="",nomes_) 
# Cria um csv com a lista dos nomes dos arquivos.(Opcional)
write.csv(nomes_,file="./csv/_lista_especies.csv", quote=FALSE)
## Usando FOREACH LOOP para converter cada arquivo xlsx em um csv que terão como nome o elementos da lista criada acima.
# Detalhes do uso do foreach em http://cran.r-project.org/web/packages/foreach/vignettes/foreach.pdf
foreach(file = especies, j = nomes_) %do% {
  xlsx_objeto<- readWorksheetFromFile(file=file, sheet=1, keep=c(2,3,4,6,7,8,9,10,13,18))
  write.csv(xlsx_objeto,file=paste0("./csv/",j,".csv"))
}
person Tiago    schedule 22.02.2015