读取包含nul字符作为分隔符的txt文件,例如\ 001?
问题描述:
当我使用r来读取txt文件时,我将read.table sep para设置为sep =“\ 001”或sep =“\\ 001”都不起作用。上述读取包含nul字符作为分隔符的txt文件,例如 001?
V1
1 886153044351\0010981623127\001\00113036806119\00113036806119
2 132693697611\0010\00118380389386\00113795105928\00113795105928
3 886134400554\0010981623127\001\00115033907649\00115033907649
4 550075776697\00115955516598\00115955516598\00113969121085\001
5 886156798054\0010918770552\001\00115977055775\00115977055775
6 132642200735\00118015668803\00118015668803\00118655109444\00118655109444
是我用读表默认为R. 我用分割功能,但它也没有像上面09月的工作。
在记事本++中,我用逗号“,”替换了\ 0001,这样我就可以像读取数据一样将数据读入R中。
如果数据很大,我不能用记事本++替换nul字符,我该怎么做呢?
答
尝试使用read.delim
函数:
read.delim(
text = "V1
1 886153044351\0010981623127\001\00113036806119\00113036806119
2 132693697611\0010\00118380389386\00113795105928\00113795105928
3 886134400554\0010981623127\001\00115033907649\00115033907649
4 550075776697\00115955516598\00115955516598\00113969121085\001
5 886156798054\0010918770552\001\00115977055775\00115977055775
6 132642200735\00118015668803\00118015668803\00118655109444\00118655109444",
sep = "\001", header = FALSE)
V1 V2 V3 V4 V5
1 V1 NA NA NA NA
2 1 886153044351 981623127 NA 13036806119 13036806119
3 2 132693697611 0 18380389386 13795105928 13795105928
4 3 886134400554 981623127 NA 15033907649 15033907649
5 4 550075776697 15955516598 15955516598 13969121085 NA
6 5 886156798054 918770552 NA 15977055775 15977055775
7 6 132642200735 18015668803 18015668803 18655109444 18655109444
+0
你确定这可以与文件一起使用吗?我不管理。 –
答
我不管理使用费伊@Colin的解决方案从一个文件中。
一种解决方案是:
- 读取该文件作为字符串
- 用逗号代替
\001
的 - 写在文件中新的字符串
- 读取新的文件为csv
像这样在R:
library(readr)
rawfile <- read_file("txt001sep.txt")
rawfile_csv <- gsub("\\\\001", ",", rawfile)
write_file(rawfile_csv, "myfile.csv")
read_csv("myfile.csv", col_names=FALSE)
使用'strsplit(dat $ V1,“\ 001”,fixed = TRUE)''。 –
或者:'library(splitstackshape); cSplit(dat,'V1',sep ='\ 001')'。 – Jaap