2016-03-30 10 views
0

Tümünün aynı şekilde biçimlendirilmesi gereken çok sayıda xlsx dosyası içeren bir klasör var. Onları R'ye okumak ve xlsx dosya ismini kullanarak referans alınabilecek listeler olarak saklamak istiyorum, böylece bunu formatlama kodumla besleyebilirim. Bu, for döngüsü için yineleme değerine bağlı olarak bunları etiketlemiş olduğunu bulduğum koddur. xlsx dosyası myname1.xlsx adı verilirseBirden çok xlsx dosyasını R'ye nasıl okuyabilirim ve sonra xlsx dosya adıyla etiketli ayrı listeler olarak saklayabilirim?

library("xlsx") 
library("gdata") 
library("rJava") 


setwd("C:/Users/Owner/Desktop/FolderDatabase") 
getwd() 

files = list.files(pattern = "\\.xlsx") 
#View(files) 

dfList <- list() 
for (i in seq_along(files)){ 
dfList[[paste0("excel",i)]] <- read.xlsx(files[i], sheetIndex = 1) 
} 


# Calling the xlsx lists that were created from the directory 
dfList$excel1 
dfList$excel2 
dfList$excel3 
dfList$excel4 

, ben liste myname1 adlandırılacak istiyoruz.

dfList <- lapply(files, read.xlsx, sheetIndex = 1) 
names(dfList) <- gsub("^.+/|\\.xlsx", "", files) 

Ya da sadece:

+0

Kopyalamaya çok yakın - http://stackoverflow.com/questions/5758084/loop-in-r-loading-files – thelatemail

cevap

1

Aksine boş olarak dfList başlatılıyor daha olmayan yaklaşımı denemek

iki kısım deseninin birinci bölümü içinde var
dfList <- sapply(files, read.xlsx, sheetIndex = 1) 

Genellikle kel ile çünkü Tam dosya spekülasyonu sizin durumunuzda olmasına rağmen muhtemelen gerekli değildir. "VEYA" ("|") 'nın ikinci kısmı gereklidir.

+0

Burada "sapsız" gerekli değildir, çünkü "lapply" bir vektör? Yani sapply (files, ben, sadeleştirin = FALSE) 'lapply (dosya, ben)' – thelatemail

+0

'lapply' seçildi çünkü bir liste vermeyi garanti etti. Ben "sapsız" ve "lapply" listesinin farklı bir şekilde adlandığını düşünmüyorum, ama daha önce de bir şeyler hakkında yanıldım. Okunacak dosya adlarının bir vektörünü geçiyordum. Sanırım yardımcı olamayacağım. –

+0

'Ben sadece bir örnek fonksiyonuydum - 's/lapply' bir fark yaratıyor -' sapply (c (" bir "," iki "), function (x) data.frame (a = 1), basitleştirmek = FALSE) 'lapply (c (" one "," two "), function (x) data.frame (a = 1)) – thelatemail

İlgili konular