如何在 R 中读取逗号分隔的字段作为文本分隔符

How to read comma-delimited fields with pipes as text delimiters in R

所以我有一个 .txt 文件,它使用逗号分隔字段,但它也使用竖线(“|”)作为文本分隔符。我想使用 R 读取此 .txt 文件(尽管如果使用 R 无法做到这一点,我可以使用其他程序),并且我希望所有值都在正确的列中。

数据样本:

15,|0370A01D-DC1E-4534-8176-A08A1E2F82E4|,|EDU|,|Education|,|Appropriations and authorization regarding higher education issues.|,|2008|
16,|03A8F7BB-9716-4494-BF41-013C27B5ECA6|,|GOV|,|Government Issues|,|issues affecting local government including appropriations|,|2003|
17,|04696109-082B-4EF6-9AA8-A6DB1013D15D|,|TEC|,|Telecommunications|,|RUS Broadband Applikcation|,|2008|
18,|04FA0BA7-E9D2-4F1E-8193-45F023065C89|,|DOC|,|District of Columbia|,|HUD Appropriations FY2009, CDBG
Financial Services Appropriations FY2009, District of Columbia
Commerce, Justice, Science Appropriations, Juvenile Justice, Byrne Grant|,|2008|
19,|04FA0BA7-E9D2-4F1E-8193-45F023065C89|,|HOU|,|Housing|,|HUD Appropriations FY2009, CDBG
Financial Services Appropriations FY2009, District of Columbia
Commerce, Justice, Science Appropriations, Juvenile Justice, Byrne Grant|,|2008|

所以每一行包含一个行号(15、16、...、19)、一个|uniqueID|、一个|IssueID|三个字母、|Issue| 的较长版本、|SpecificIssue| 和 |Year|。

我最接近阅读此文件的方法是使用以下代码(我知道我将管道标识为其中的分隔符但它是不正确的,但这给出了迄今为止最好的结果):

lob_issues2 <- fread("file.txt", sep = "|", fill = TRUE)

结果如下 table。

如您所见,第 18 行和第 19 行中的 SpecificIssue 列引起了麻烦。也许这些值太长或某事,这使得 R 将这些值的一部分分配到新列中。我希望 R 将这些值保留在 SpecificIssue 列中。关于使用什么代码来实现这一点有什么建议吗?

提前致谢。另外,如果您认为其他程序对此更好,请告诉我。

使用 quote= 参数让它知道 |被用作引号字符:

lob_issues2  <- read.table("file.txt", quote = "|", sep = ",")