我不熟悉当前正在处理项目的编码,这需要我解析位于.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'))
})
以下是错误消息的图片: