Нет разделителей. Таким образом, способ справиться с этим - использовать файл fwf logi c. В тексте преамбулы было 9 строк, но одна из них была разбита нестандартным переводом строки. Восьмая строка имеет подчеркивания, которые определяют расположение столбцов. 84-я строка данных (и последующие строки) содержит записи в столбце "NET ID", которых не было в строках 7-9 выше.
* X Y AVERAGE CONC ZELEV ZHILL ZFLAG AVE GRP RANK NET ID DATE(CONC)
* ____________ ____________ ____________ ______ ______ ______ ______ ________ ________ ________ ________
739950.40000 5083641.40000 12.01732 124.31 1564.68 0.00 1-HR ALL 175TH 19120324
---snipped lines------
Это то, что вы видите после read.table( ..., fill=TRUE)
операция с добавленными данными в 10-м столбце со значением «CAR1»:
83 739277.6 5083387 0.78225 123.46 1564.68 0 1-HR ALL 175TH 19010108
84 739061.1 5082586 0.34595 122.50 1564.70 0 1-HR ALL 175TH CAR1
85 19052321.0 NA NA NA NA NA
86 739161.1 5082586 0.39795 122.00 1564.70 0 1-HR ALL 175TH CAR1
Вот прием для создания «линейки» для определения позиций столбцов. Вы можете вычислить ширину этих столбцов подчеркивания (включая 2 позиции в начале и 3 пробела позиции, используя этот вывод:
rt1<-readLines("~/Downloads/PLT_PERIOD_ALL_175_P98.PLT",n=9 ) # first 8 lines
rt2 <- paste0( rep(c(1:9,0),12), collapse="") # one's place ruler
rt2[2] <- paste0( tail( rep( c(0:9, 0:1) ,each=10),-1 ),collapse="") # ten's place ruler
> rt2
[1] "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
[2] "00000000011111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111111111"
> rt1[8]
[1] "* ____________ ____________ ____________ ______ ______ ______ ______ ________ ________ ________ ________"
А затем прочитайте:
> ?read.fwf
Вы читать все данные, используя ширину.