如何使R读取数据以“| ** |”分隔

时间:2013-09-30 06:33:34

标签: r read.table

我有一个大型数据集,这些变量由|**|符号分隔。我尝试使用sep="|",但是当包含|的字符串变量之一时,这不起作用。如何使用复合分隔符使R读取数据?

1 个答案:

答案 0 :(得分:4)

(坦率地说,我觉得用sed做这个会更容易。这在R中可能不会很快)

Lines <- readLines(filename)
sLines <- strsplit(Lines, "|**|", fixed=TRUE) # Thanks, Richie.
dat <- read.table(text= sapply(sLines, paste, collapse=",") ,sep=",")

这是对简单数据字符串的测试:

Lines <- "a|**|b|**|c\nd|**|e|**|f"
sLines <- strsplit(Lines, "\\|\\*\\*\\|")
dat <- read.table(text= sapply(sLines, paste, collapse=",") ,sep=",")
dat
#-----------
  V1 V2 V3
1  a  b  c
2  d  e  f

strsplit使用正则表达式模式,因此您需要双倍地逃避“特殊”。如果在read.table调用中使用colClasses会更快。见?read.table