2011-03-19 53 views
9

我剛剛開始使用R,並且在執行以下任務時遇到問題:我在坐在工作目錄中的單獨純文本文件中有大約130個語言樣本。我想要做的是使用掃描導入它們並保留它們的文件名。 具體來說,我想用類似的事:在R中導入多個文本文件並從預定列表中分配它們的名稱

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

是否有使用命令如*適用於自動化過程的方法嗎?

回答

17

這裏是過程自動化

# 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 = ",") 

,如果你知道它是什麼,您可以更改分隔符的一種方式。將數據保存爲數據框的列表很方便,因爲它更容易投入矢量化操作或稍後循環。

+0

感謝您的回覆。我嘗試了你的建議,但不幸的是它沒有奏效。我認爲問題在於語言樣本不是表格格式;他們是言論自由的樣本(例如,「有一天我去散步......等等)」。最終我想要做的是使用languageR軟件包中的一些工具分析樣本。要運行languageR函數,首先,我必須爲每個樣本運行以下命令。 Patient130.txt <-scan(「./ Patient130.txt」,what =「character」) 任何想法如何運行掃描所有樣品而不是read.table? – 2011-03-19 22:44:53

+1

@Mike Ferguson:根據@Ramnath的建議嘗試使用'data_list = lapply(txt_files,scan,what =「character」)''。 – daroczig 2011-03-19 23:50:43

+0

你試過邁克的建議嗎? lapply只是一個循環遍歷列表的包裝。實際上,你正在做'lapply(txt_files,函數(文件)掃描(文件,what =「字符」))' – Ramnath 2011-03-20 19:28:31

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) 
      } 
相關問題