我正在尝试使用
这样的行来读取文本文件1600Q WASHERS=10|FLAT WASHERS=14
1700R BUCKETS=25|PAILS=20|BASKETS=6
进入像
这样的数据框1600Q WASHERS 10
1600Q FLAT WASHERS 14
1700R BUCKETS 25
1700R PAILS 20
1700R BASKETS 6
使用
raw.data <- read.table("myData.txt",sep="\t",fill=TRUE, header=FALSE,quote = "")
我的行看起来像
1600Q WASHERS=10|FLAT WASHERS=14
1700R BUCKETS=25|PAILS=20|BASKETS=6
我读书时有没有办法分开?
答案 0 :(得分:0)
基于agstudy的建议,这里是我如何处理输入文件的每一行,我将用read.table
读取,假设唯一的空白位于&#34;之间。 1600Q&#34;和零件清单。如果还有其他空格,则必须进行调整。
下面的行可以压缩,但这详细说明了所采取的步骤。
# make a fake pair of strings, assuming no other tab separators in file
indat <- c('1600Q' ,
'WASHERS=10|FLAT WASHERS=14|WASHERS=11|FLAT WASHERS=15|WASHERS=12|FLAT WASHERS=16')
pairs <- unlist(strsplit(indat[2],'[|]'))
outcol <- matrix(nr=length(pairs),nc=2)
for(j in 1:length(pairs) ) {
outcol[j,] <- unlist(strsplit(pairs[j],"=") )
}
finalmat <- cbind(rep(indat[1],nrow(outcol)),outcol)
答案 1 :(得分:-1)
这里有一种方式:
ll <- strsplit(gsub('([A-Z])[ ]+','\\1=',
' 1600Q WASHERS=10|FLAT WASHERS=14'),'[|]')
read.table(text=unlist(ll),sep='=')
## V1 V2 V3
## 1 1600Q WASHERS 10
## 2 FLAT WASHERS 14
=
strsplit
read.table