R用大括号读取文件

时间:2015-02-24 16:20:10

标签: r readfile

我有一个以下的txt文件:

Header1 Header2 Header3
1 5 {Joe, John, Sam}
2 9 {Mike}
3 5 {Bob, Alice}

我试图用以下命令读取它,但是它给出了一个错误:

data = read.table("file_location/data.txt", sep=" ", strip.white=TRUE, header=TRUE)

more columns than column names

我如何阅读此类文件?

2 个答案:

答案 0 :(得分:2)

这很简单:

> read.table(text = chartr("{}", "''", readLines("data.txt")), header = TRUE)
  Header1 Header2        Header3
1       1       5 Joe, John, Sam
2       2       9           Mike
3       3       5     Bob, Alice

关键部分是使用chartr将大括号替换为单引号。

答案 1 :(得分:0)

这样做不会替换字符。 read.pattern提取捕获组(与正则表达式的括号部分匹配的文本)并将它们排列到data.frame中。我们分别阅读标题。例如,text = Lines部分可以替换为"myfile",以便从文件中读取文字。

# test data
Lines <- "Header1 Header2 Header3
1 5 {Joe, John, Sam}
2 9 {Mike}
3 5 {Bob, Alice}"

library(gsubfn)

DF <- read.pattern(text = Lines, pattern = "^ *(\\S+) (\\S+) (.*)", skip = 1, 
   as.is = TRUE, col.names = read.table(text = Lines, as.is = TRUE, nrow = 1))

,并提供:

 Header1 Header2          Header3
1       1       5 {Joe, John, Sam}
2       2       9           {Mike}
3       3       5     {Bob, Alice}

此处显示正则表达式的可视化:

^ *(\S+) (\S+) (.*)

Regular expression visualization

Debuggex Demo