如何在 R 中对没有换行符的字符使用 fread 或 read_delim

How to use fread or read_delim in R on characters with no linebreak

我有几个 .txt 文件需要作为数据帧导入 R 以进行某些数据分析。其中一个文件没有任何形式的 EOL,所以我想知道我将如何导入它。

\"A\";\"B\";\"C\";\"D\";\"D\";\"E\";\"F\";\"G\";\"H\";\"I\";\"J\";\"K\";\"L\";\"M\";\"N\";\"O\";\"P\";\"Q\";\"R\";\"S\";\"T\";\"U\";\"V\"\"1\";4;\"55-555-5555-555\";1234-56-78;\"111\";1510;5;1234-12-17;12345.1234512345;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA\"2\";6;\"22-222-2222-222\";5678-56-78;\"222\";2051;0;NA;0;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA

这是该 .txt 文件的前 ~500 个字符的样子。 EOL 需要这样放置:

\"A\";\"B\";\"C\";\"D\";\"D\";\"E\";\"F\";\"G\";\"H\";\"I\";\"J\";\"K\";\"L\";\"M\";\"N\";\"O\";\"P\";\"Q\";\"R\";\"S\";\"T\";\"U\";\"V\"

\"1\";4;\"55-555-5555-555\";1234-56-78;\"111\";1510;5;1234-12-17;12345.1234512345;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA

\"2\";6;\"22-222-2222-222\";5678-56-78;\"222\";2051;0;NA;0;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA

通常我只会将“\n” gsub 到我需要它的地方,但是在我要放置 \n 的地方没有重复出现的字符串,所以我认为 gsub 不会在这种情况下工作。

看到缺失值如何用NA清楚地表示,是否有类似于read_delim的函数有一个"col_number = x"参数?就像第一个 x 值是 headers,接下来的 x 值是第一行的值,依此类推?

如果它改变了什么,这些 .txt 文件相当大 (>300mb)。

非常感谢Julian_Hn。很有魅力。

我可能只是将其作为向量读入,然后将其重新格式化为矩阵,其中包含您知道的数据集中的列数。这基本上可以满足您的需求

str <- "\"A\";\"B\";\"C\";\"D\";\"D\";\"E\";\"F\";\"G\";\"H\";\"I\";\"J\";\"K\";\"L\";\"M\";\"N\";\"O\";\"P\";\"Q\";\"R\";\"S\";\"T\";\"U\";\"V\";\"1\";4;\"55-555-5555-555\";1234-56-78;\"111\";1510;5;1234-12-17;12345.1234512345;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;\"2\";6;\"22-222-2222-222\";5678-56-78;\"222\";2051;0;NA;0;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA"

vec <- strsplit(str,";")[[1]]
//EDIT: add byrow = T To stay in the right format. Thanks Yuriy
table <- matrix(vec,ncol=23,nrow=3, byrow = T)
df <- as.data.frame(table)