【问题标题】:Read txt files containing nul character as seprator, such as \001?读取包含 nul 字符作为分隔符的 txt 文件,例如 \001?
【发布时间】:2017-09-06 08:26:48
【问题描述】:

当我使用 r 读取 txt 文件时,我将 read.table sep 参数设置为 sep="\001" 或 sep="\\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 中使用读表默认值。 我使用 split 功能,但它也不适用于上面的 sep。

在notepad++中,我将\0001替换为逗号",",这样我就可以像数据框一样将数据读入R了。

如果数据很大,我不能用notepad++替换nul字符,怎么办?

【问题讨论】:

  • 使用strsplit(dat$V1, "\001", fixed = TRUE)。
  • 或:library(splitstackshape); cSplit(dat, 'V1', sep = '\001')。

标签: r character read.table nul


【解决方案1】:

我无法从文件中使用@Colin Fay 的解决方案。

解决办法是:

  • 将文件作为字符串读取
  • 将\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)

【讨论】:

    【解决方案2】:

    尝试改用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-20
      相关资源
      最近更新 更多