【问题标题】:Exporting data frame columns into separate txt files将数据框列导出到单独的 txt 文件中
【发布时间】:2016-01-23 23:15:50
【问题描述】:

我将几本小说分块到一个名为documents 的数据框中。我想将每个块导出为单独的 .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 函数在这里可以很好地工作?

【问题讨论】:

  • 请使用dput(documents)的结果进行编辑。
  • @alistaire 这里要复制的东西太多了!您有兴趣确切了解什么?
  • 不一定是您的数据,但要获得答案,您确实需要发布一份传真,以便人们了解您的数据的排列方式、类型、类别等。最好创建它带有一个真实 R 对象的dput,因此其他人可以轻松加载它而无需重新输入所有内容。
  • @alistaire 谢谢!我添加了一些上下文

标签: r text dataframe


【解决方案1】:

我不肯定这对你有用(多一点你的输入和所需输出的例子会有所帮助),但你遇到的一个问题是你的 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"))
 }

请注意,如果您在开始循环之前已经设置了路径,则无需每次都指定路径。

【讨论】:

  • 好吧,这是有道理的!你如何设置循环之前的路径?您是否将其设置为变量,然后将该变量包含在粘贴函数中?
  • for 循环开始之前的那一行,你可以说setwd("data/taggedCorpus")。在循环之后,要返回到您之前所在的工作目录,您需要添加setwd("..")。然后,您只需将其用于write 命令:write(documents$tagged_text[i], paste0(documents$file[i],".txt"))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
  • 2022-07-17
  • 2012-11-29
  • 2014-12-24
  • 1970-01-01
相关资源
最近更新 更多