循环遍历文件夹中的多个.txt文件,解析NDJSON字符串并在R中编写.csv输出文件

时间:2018-02-09 22:53:59

标签: r loops parsing batch-processing ndjson

我不熟悉当前正在处理项目的编码,这需要我解析位于.txt文件中的NDJSON字符串。我有数百个.txt文件,每个文件包含多达100万个NDJSON字符串。我有下面的代码,我知道成功解析了一个单独的文件(如果我明确说明了.txt输入文件的名称和.csv输出文件的名称):

library('ndjson')
library('tidyverse')

parsed_df <- tbl_df(ndjson::stream_in("test.txt"))
selected_df <- parsed_df[,c(3,26,30,51,54,57,76,93,99,125,143,169,173,246,
                            250,251,253,254,267,269,370,431,432,450)]

write.csv(selected_df, 'test_reduced.csv')

在上面的例子中,我只是将目录设置为一个文件夹,并确保文件位于该文件夹中。

我现在想重复这个过程,但我想循环遍历文件夹中的所有文件,而不是手动输入每个文件的名称并调整输出文件。每个文件都包含与特定灾难相关的推文信息,因此我希望能够为每个文件创建逻辑名称,例如Nepal01.txt,Nepal02.txt,HurricaneSandy01.txt等。我这样说是因为每个文件的名称都很长,所以如果我重命名它们,我想让这个过程工作但保持名称合乎逻辑。出于这个原因,我需要找到一种动态方法来选择以.txt结尾的所有文件,并动态地以.csv格式编写具有相关名称的输出文件,例如。 Nepal_reduced01.csv,Nepal_reduced02.csv,HurricaneSandy_reduced01.csv等。

以下是我迄今为止失败的尝试:

library('ndjson')
library('tidyverse')

filenames= list.files(".", ".txt")
for( i in 1:length(filenames) )

  parsed_df <- tbl_df(ndjson::stream_in(filenames[1])) 
  selected_df <- parsed_df[,c(3,26,30,51,54,57,76,93,99,125,143,169,173,246,
                              250,251,253,254,267,269,370,431,432,450)]

  write.csv(selected_df, cbind(i,'.csv'))
})

以下是错误消息的图片:

enter image description here

0 个答案:

没有答案