让我们给一个包含字符串的向量,就像这样:
> string
[1] " 26 10.00 28.00 28.00 28.00 28.00 28.00 28.00 26"
[2] " 27 10.00 28.00 28.00 28.00 28.00 28.00 28.00 27"
[3] " 28 10.00 28.00 28.00 28.00 28.00 28.00 28.00 28"
[4] " 29 10.00 28.00 28.00 28.00 28.00 28.00 29"
[5] " 30 10.00 28.00 28.00 28.00 28.00 28.00 30"
[6] " 31 10.00 28.00 28.00 28.00 31"
我希望将其作为data.frame
读取,包含6行和9列,如下所示:
V1 V2 V3 V4 V5 V6 V7 V8 V9
1 26 10 28 28 28 28 28 28 26
2 27 10 28 28 28 28 28 28 27
3 28 10 28 28 28 28 28 28 28
4 29 10 NA 28 28 28 28 28 29
5 30 10 NA 28 28 28 28 28 30
6 31 10 NA 28 NA 28 NA 28 31
其中每个空单元格被视为NA
。我已尝试使用read.table
并设置fill=TRUE
,但由于结果如此,它无法正常工作:
> read.table(textConnection(string), sep="", fill=TRUE)
V1 V2 V3 V4 V5 V6 V7 V8 V9
1 26 10 28 28 28 28 28 28 26
2 27 10 28 28 28 28 28 28 27
3 28 10 28 28 28 28 28 28 28
4 29 10 28 28 28 28 28 29 NA
5 30 10 28 28 28 28 28 30 NA
6 31 10 28 28 28 31 NA NA NA
我坚持这个。也许这比我想象的要容易,但我无法弄清楚如何做到这一点:(
这是数据:
string <- c(" 26 10.00 28.00 28.00 28.00 28.00 28.00 28.00 26",
" 27 10.00 28.00 28.00 28.00 28.00 28.00 28.00 27",
" 28 10.00 28.00 28.00 28.00 28.00 28.00 28.00 28",
" 29 10.00 28.00 28.00 28.00 28.00 28.00 29",
" 30 10.00 28.00 28.00 28.00 28.00 28.00 30",
" 31 10.00 28.00 28.00 28.00 31")
答案 0 :(得分:4)
看起来您可以使用read.fwf()
:
ff <- tempfile()
cat(file = ff, "12 34 56", "98 54", sep = "\n")
read.fwf(ff, widths=c(3,3,2))
# V1 V2 V3
# 1 12 34 56
# 2 98 NA 54