2016-01-23 58 views
0

我將幾個小說分塊爲一個名爲documents的數據框。我想將每個塊導出爲單獨的.txt文件。將數據幀列導出到單獨的txt文件中

由兩列組成的數據框。第一列具有每個塊的文件名,第二列具有將進入該文件的實際文本。

documents[1,1] 
[1] "Beloved.txt_1" 

documents[1,2] 
[1] "124 was spiteful full of a baby's venom the women......" 

class(documents) 
[1] "data.frame" 

我想寫一個for循環,將採取每一行,使第二列到一個txt文件,使第一列中的文件名。然後迭代每一行。我一直在使用這樣的事情:

for (i in 1:ncol(documents)) { 
    write(tagged_text, paste("data/taggedCorpus/", 
        documents[i], ".txt", sep="")) 

我也一直在讀那也許cat功能將工作做好嗎?

+1

請用'dput(documents)'的結果編輯。 – alistaire

+0

@ alistaire這裏有太多要複製的地方!你真正有興趣知道什麼? – Stefano

+0

它不一定是你的數據,但爲了得到答案,你真的需要發佈一個傳真,以便人們知道你的數據是如何安排,類型,類等。最好是用'輸入'來創建它一個真正的R對象,因此其他人很容易加載它而不用重新輸入所有內容。 – alistaire

回答

0

我不是積極的,這將爲你工作(多一點你的輸入和期望的輸出的例子會有所幫助),但你有一個問題是你的for循環是按列而不是按行。如果你想爲每一行都做一次,那麼它需要是for (i in 1:nrow(documents)而不是ncol。

假設「documents」是您的data.frame的名稱,並且包含您要保存的文本的列稱爲「tagged_text」,並且文件名稱的列稱爲「file」,請嘗試以下操作:

for (i in 1:nrow(documents)) { 
     write(documents$tagged_text[i], paste0("data/taggedCorpus/", 
       documents$file[i], ".txt")) 
} 

請注意,如果您在啓動循環之前已經設置了路徑,則無需每次都指定路徑。

+0

好吧,這是有道理的!你如何在循環之前設置路徑?你是否將它設置爲一個變量,然後在粘貼功能中包含該變量? – Stefano

+0

在'for'循環開始之前的行,你可以說'setwd(「data/taggedCorpus」)'。在循環之後,要返回到之前的工作目錄,您需要添加'setwd(「..」)'。然後,你只需要用'write'命令:'write(documents $ tagged_text [i],paste0(documents $ file [i],「.txt」))' – LauraS

+0

謝謝!我現在要試試這個 – Stefano

相關問題