我是目前正在处理一个项目的编码新手,这需要我解析位于 .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'))
})
下面是错误消息的图像: