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

时间:2019-03-26 11:56:20

标签: r fread readr

我有几个.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”,但是在我会放置一个\ n的地方没有重复出现的字符串,所以我认为gsub不会在其中起作用这个实例。

看到缺失值如何用NA清楚地指示,是否有一个类似于read_delim的函数,该函数具有“ col_number = x”参数?就像前x个值是标题,后x个值是第一行的值,依此类推?

如果更改了任何内容,则这些.txt文件会很大(> 300mb)。

非常感谢Julian_Hn。就像魅力一样。

1 个答案:

答案 0 :(得分:1)

我可能只是将其读为向量,然后使用您知道数据集中的列数将其重新格式化为矩阵。这基本上就是您想要的

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)