如何在 R 中使用 fread 读取 .pgn.bz2 文件?

How to read a .pgn.bz2 file with fread in R?

我正在尝试从 https://database.lichess.org/ 读取国际象棋游戏文件,其中文件存储为 pgn 的 bzip。 pgn 文件的示例格式如下所示:

[Event "4th Bayern-chI Bank Hofmann"]
[Site "?"]
[Date "2000.10.29"]
[Round "?"]
[White "Carlsen, Magnus"]
[Black "Cordts, Ingo"]
[ECO "A56"]
[WhiteElo "0"]
[BlackElo "2222"]
[Result "0-1"]

1. d4 Nf6 2. c4 c5 3. Nf3 cxd4 4. Nxd4 e5 5. Nb5 d5 6. cxd5 Bc5 7. N5c3 O-O 8. e3 e4 9. h3 Re8 10. g4 Re5 11. Bc4 Nbd7 12. Qb3 Ne8 13. Nd2 Nd6 14. Be2 Qh4 15. Nc4 Nxc4 16. Qxc4 b5 17. Qxb5 Rb8 18. Qa4 Nf6 19. Qc6 Nd7 20. d6 Re6 21. Nxe4 Bb7 22. Qxd7 Bxe4 23. Rh2 Bxd6 24. Bc4 Rd8 25. Qxa7 Bxh2 26. Bxe6 fxe6 27. Qa6 Bf3 28. Bd2 Qxh3 29. Qxe6+ Kh8 30. Qe7 Bc7 

我可以直接从 bz2 文件中读取带有 read.csv 的文件:

read.csv(file.pgn.bg2, nrows = 100000, stringsAsFactors = F, header = F)

但问题是 read.csv 很慢,文件有数百万行。所以我想我会使用 fread 因为现在它可以读取 .bz2 文件。 问题是当我尝试以下

fread(file.pgn.bg2, nrows = 1000)

该命令运行了很长时间没有任何结果。 我的会话信息():

R version 3.6.1 (2019-07-05)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)

我尝试使用普通的 .pgn 文件,但 fread 读取不正确。因为它拆分列并丢弃游戏符号,所以对于上面的示例,它会导致这样的结果:

V1               V2
[Event     "4th Bayern-chI Bank Hofmann"]
[Site      "?"]
[Date      "2000.10.29"]
[Round     "?"]
[White     "Carlsen, Magnus"]
[Black     "Cordts, Ingo"]
[ECO       "A56"]
[WhiteElo  "0"]
[BlackElo  "2222"]
[Result    "0-1"]

但至少它正在阅读它。 有人会对如何去做有任何建议吗?如何使用fread正确读取.pgn.bz2文件?

这是正确读取文件....

之后如何处理是另外一个问题;-)

DT <- fread( "./temp/lichess_db_standard_rated_2013-01.pgn.bz2", sep = "", header = FALSE )