如何使用read.table将^ A(ctrl-A)用作字段分隔符

时间:2014-09-11 12:24:58

标签: r

我有一个数据文件,我试图通过read.table加载。该文件具有^ A(ctrl-A)作为字段分隔符。 通过vi看起来像这样:

5^A41244901564015^A2542435^A2345234

我的尝试是:

myDf <- read.table(file = "myfile.asv", sep = '^A')

Error in scan(file, what = "", sep = sep, quote = quote, nlines = 1, quiet = TRUE,  : 
  invalid 'sep' value: must be one byte

myDf <- read.table(file = "myfile.asv", sep = as.character('^A'))

Error in scan(file, what = "", sep = sep, quote = quote, nlines = 1, quiet = TRUE,  : 
  invalid 'sep' value: must be one byte

有关创建用于read.table的ctrl-A分隔符的任何建议吗?是否有一些我应该考虑的替代解决方案。

根据尝试的评论:

  

myDf&lt; - read.table(file =“myfile.asv”,sep ='\ 001')

扫描错误(文件,内容,nmax,sep,dec,quote,skip,nlines,na.strings,:   第1行没有30个元素

2 个答案:

答案 0 :(得分:0)

sep参数必须只有1个字符,因此^A不是有效的sep值。您可以通过阅读文件的所有行并通过strsplit分割它们来解决这些问题:

    lines<-readLines("file.txt")
    ret<-simplify2array(strsplit(lines,"^A",fixed=TRUE))

您可能需要转置(t函数)结果,为其指定colnames,将各列强制转换为正确的数据类型(这样一切都为character)并强制转换为{ {1}}。

否则,您可以通过data.framereadChar gsub阅读整个文件到适当的分隔符并使用^A

read.table

答案 1 :(得分:0)

谢谢大家,@MrFlick合适的分隔符实际上就是答案。我碰巧在数据中遇到了一些额外的工件。

最终代码是:

  

myDf&lt; - read.table(file =&#34; myfile.asv&#34;,sep =&#39; \ 001&#39;,na.strings =&#39; \\ N&#39; ,quote =&#34;&#34;,fill = T)