2011-03-19 8 views
9

Sadece R'yi kullanmaya başladım ve şu görevi gerçekleştirmede sorun yaşıyorum: Çalışma dizinimde oturan ayrı düz metin dosyalarında yaklaşık 130 dil örneğim var. Yapmak istediğim şey, onları taramak ve dosya adlarını korumak için içe aktarmaktır. işlemini otomatik hale getirmek için geçerlidir gibi bir komut * kullanmak için bir yolu var mıR'ye birden çok metin dosyasını içe aktarın ve önceden belirlenmiş bir listeden adlarını atayın

Patient01.txt <-scan("./Patient01.txt", what = "character") 
Patient02.txt <-scan("./Patient02.txt", what = "character") 
... 
Patient130.txt <-scan("./Patient130.txt", what = "character") 

: Özellikle, ne gibi bir şey kullanıyor yapmak istersiniz ?

cevap

17

Burada ne olduğunu biliyorsanız ayırıcısını değiştirebilirsiniz sürecini

# read txt files with names of the form Patient*.txt 
txt_files = list.files(pattern = 'Patient*.txt'); 

# read txt files into a list (assuming separator is a comma) 
data_list = lapply(txt_files, read.table, sep = ",") 

otomatik hale getirmek için bir yoludur. Verileri bir vectorized operasyona atmak veya daha sonra döngü yapmak daha kolay olduğu için, veri karelerinin bir listesi olarak tutmak uygundur.

+0

Yanıtınız için teşekkür ederiz. Tavsiyeni denedim ama maalesef işe yaramadı. Problemin, dil örneklerinin tablo biçiminde olmaması olduğunu düşünüyorum; Onlar özgür konuşma örnekleridir (E., "Bir gün yürüyüşe çıktım .... vs"). Nihayetinde yapmak istediğim, dilR paketindeki bazı araçları kullanarak örnekleri analiz etmektir. LanguageR işlevlerini çalıştırmak için, önce, her örnek için aşağıdaki komutu çalıştırmam gerekir. Patient130.txt <-scan ("./ Patient130.txt", what = "character") Read.table yerine tüm örnekler için taramayı nasıl çalıştırabilirim konusunda bir fikriniz var mı? –

+1

@Mike Ferguson: @ Ramnath'ın önerisini temel alarak, data_list = lapply (txt_files, scan, what = "character") ile deneyin. – daroczig

+0

Mike'ın önerisini denedin mi? lapply, bir listeye geçmek için sadece bir sarıcıdır. Etkili bir şekilde, "lapply (txt_files, işlev (dosya) taraması (dosya, ne =" karakter ")) yapıyorsunuz' ' – Ramnath

0
  files <- list.files(pattern = 'Patient*.txt')  
      for(i in files) { 
      x <- read.table(i, header=TRUE, comment.char = "A", sep="\t") 
      assign(i,x) 
      }