R用大括号读取文件
R read file with curly braces
我有以下 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
如何读取这样的文件?
这很简单:
> 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
将大括号替换为单引号。
这将在不替换字符的情况下完成。 read.pattern
提取捕获组(匹配正则表达式括号部分的文本)并将它们排列成 data.frame。我们分别阅读header。 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+) (.*)
我有以下 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
如何读取这样的文件?
这很简单:
> 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
将大括号替换为单引号。
这将在不替换字符的情况下完成。 read.pattern
提取捕获组(匹配正则表达式括号部分的文本)并将它们排列成 data.frame。我们分别阅读header。 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+) (.*)