2016-01-23 59 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

相关问题