Вот решение all R, использующее три вызова read.table
.Первый оператор read.table
читает каждую строку данных как 6 полей;второй оператор read.table
правильно объединяет поля и читает их, а третий извлекает имена из заголовка.
fn <- "data.txt"
# create a test file
Lines <- "A , B , C
4,000000059604644E-16 , 7,999997138977056E-16, 9,000002145767216E-16
4,999999403953552E-16 , 6,99999988079071E-16 , 0,099999904632568E-16
9,999997615814208E-16 , 4,30000066757202E-16 , 3,630000114440918E-16
0,69999933242798E-16 , 0,099999904632568E-16, 55,657576767799999E-16
3,999999761581424E-16, 1,9900000095367432E-16, 0,199999809265136E-16"
cat(Lines, "\n", file = fn)
# now read it back in
DF0 <- read.table(fn, skip = 1, sep = ",", colClasses = "character")
DF <- read.table(
file = textConnection(do.call("sprintf", c("%s.%s %s.%s %s.%s", DF0))),
col.names = names(read.csv(fn, nrow = 0))
)
, что дает:
> DF
A B C
1 4.000000e-16 7.999997e-16 9.000002e-16
2 4.999999e-16 7.000000e-16 9.999990e-18
3 9.999998e-16 4.300001e-16 3.630000e-16
4 6.999993e-17 9.999990e-18 5.565758e-15
5 4.000000e-16 1.990000e-16 1.999998e-17
Примечание: Оператор read.csv
в вопросе подразумевает, что заголовок существует, но в примерах данных его нет.Я предположил, что есть заголовок, но если нет, то удалите аргументы skip=
и col.names=
.