прочитать текстовый файл с двумя строками для каждого случая; с R

как читать из R файл .txt с двумя строками для каждого случая. Например, такой файл, как [ http://www.amstat.org/publications/jse/datasets/93cars.dat.txt ] Пожалуйста, помогите. КЛ


person user2203706    schedule 09.05.2015    source источник


Ответы (2)


Я думаю, что это самый простой способ, который я могу придумать. И вы должны отметить, что ваша URL-ссылка в вопросе включает квадратную скобку, которая может замедлить людей.

u <- url("http://www.amstat.org/publications/jse/datasets/93cars.dat.txt")

d <- readLines(u)

s <- paste(d[seq(1,length(d),2)], d[seq(2,length(d),2)])

data <- read.table(header=F, stringsAsFactors=F, text=s)
person Forrest R. Stevens    schedule 09.05.2015
comment
Привет, Форрест, я ценю твою помощь. Извините за ]. - person user2203706; 14.05.2015

Есть много других способов сделать это, и действительно, этот вопрос является точной копией вопроса здесь (тот же вопрос, те же данные), в котором есть ответ с использованием read.fwf, который требует, чтобы вы знали фиксированную ширину каждого поля. Это может быть автоматизировано, но, возможно, громоздко.

Самый масштабируемый способ, по крайней мере, на POSIX-машинах, — это использовать инструменты командной строки, такие как awk, для эффективного и быстрого выполнения предварительной обработки. Вот пример использования awk, который читает файл двумя частями (чередующимися строками) и cbind совмещает их вместе.

download.file("http://www.amstat.org/publications/jse/datasets/93cars.dat.txt", 
                             destfile = "Data/93cars.txt")
firstPart = pipe(description = "awk 'NR%2==0' < Data/93cars.txt")
secondPart = pipe(description = "awk 'NR%2 != 0' < Data/93cars.txt")
dfCars = cbind(read.table(firstPart), read.table(secondPart))
person tchakravarty    schedule 09.05.2015