2017-04-10 89 views
0

我翻遍了電路板,但在R studio中找不到我的問題的答案。將數據從txt語料庫提取到R中的.csv

所以,也許任何人都有時間和善良,來幫助我。

我有一個文件夾包含106個txt文件,我希望提取數據。

因此,我想建立一個.csv兩行。第一行應包含文件名,第二行應包含一個數字,whis是第一行的最後一個「單詞」。

每個文檔的第一行看起來像「y的文檔x」。因此第二行應包含y。請注意,x可能包含一位,兩位或三位數字。 如果這是不可能的,我會很高興,如果.csv可以包含第2行的整個第一行。

回答

0

此解決方案確實涉及很多步驟,所以我認爲它值得回答,但我'你喜歡你試着改進你的問題,以確保我正在回答你打算提出的問題。例如,你說你想要一個csv與兩個,但從你的描述的聲音我認爲你其實意味着你想要兩個。我在下面的解決方案中對此進行了一些猜測。

有發生在這裏的幾個基本步驟:

  • 通過你的工作目錄遍歷找到在時間的路徑和.txt文件
  • 讀取每個文件,一個所有的行名
  • 選擇第一行
  • 突破將第一行字
  • 選擇第一行的最後一個字
  • 追加這個詞的運行列表
  • 後迭代完成,建立一個data.frame和寫入CSV輸出
fp = tools::list_files_with_exts(dir='.', ext='txt', full.names = TRUE) 
fn = tools::list_files_with_exts(dir='.', ext='txt', full.names = FALSE) 
fn = tools::file_path_sans_ext(fn) 

items = length(fp) # get our iterator length for files 

lastword = as.character(NULL) 
for(i in 1:items) { # iterate through files 
    line = readLines(fp[i])[1] # read in lines and select the first 
    words = strsplit(line, ' ')[[1]] # split string into vector on spaces 
    word = tail(words, 1) # get the last word of the vector 
    lastword = c(lastword, word) # combine with lastword list 
} 
df = data.frame(filename=fn, lastword) 
write.csv(df, 'my.csv') 
+0

哇@Mikuana太感謝你了。我不擅長編碼,但如果我閱讀你的建議,我會得到你的解決方案,我喜歡它。 我真的是指欄。對困惑感到抱歉! 如果我儘管試試你的代碼,會出現以下錯誤: '錯誤文件(CON,「R」):無法打開連接 另外:警告消息: 在文件(CON,「R」):無法打開文件'NA':沒有這樣的文件或目錄' 我試圖谷歌它,並將文件移動到另一個文件夾以及使用'setwd'。這似乎是一個R具體的錯誤,我不知道如何解決方法:( – Dumbledoge

+0

對不起,我再次,我忘了提及,我也確保我的源路徑以另一個Stackoverflow線程中討論的「/」結尾。 – Dumbledoge

+0

我認爲這兩個錯誤都存在,因爲'fp == NA'。你看過「fp」對象的元素嗎?你是否收回了一個向你的txt文件看起來像有效文件路徑的向量? – Mikuana