R read.delim ошибка "нет доступных строк на входе" - PullRequest
0 голосов
/ 10 мая 2018

У меня проблемы с загрузкой определенного набора данных с разделителями табуляции из USGS.gov в базе R с использованием read.delim или read.table.Я, вероятно, делаю очевидную ошибку, но я не могу понять, что.

Во-первых, следующий запрос прекрасно работает на базе R и извлекает все данные об уровне воды для Маркландской плотины на реке Огайо.Это также работает для других плотин.

Markland <- read.delim(("https://nwis.waterdata.usgs.gov/ky/nwis/uv?cb_00065=on&format=rdb&site_no=03277200&period=&begin_date=1950-09-30&end_date=2030-12-31"), 
                       stringsAsFactors=FALSE, skip=28, header=TRUE)

Однако мой запрос на другую таблицу, расположенную ниже по течению от плотины Макалпайн, не работает.Данные структурированы практически одинаково.Я играл со всеми опциями чтения, предоставленными в справке read.table, но безрезультатно.Я не уверен, что отличается в этой таблице, или что нужно изменить с помощью этого запроса.

McAlpine <- read.delim(("https://nwis.waterdata.usgs.gov/ky/nwis/uv?cb_00065=on&format=rdb&site_no=03294500&period=&begin_date=1950-09-30&end_date=2030-12-31"), 
            skipNul=TRUE, blank.lines.skip=TRUE, sep = "\t", 
            stringsAsFactors=FALSE, skip=40, header=FALSE , fill=TRUE)

Вот таблица обид: https://nwis.waterdata.usgs.gov/ky/nwis/uv?cb_00065=on&format=rdb&site_no=03294500&period=&begin_date=1950-09-30&end_date=2030-12-31

Error Message

Table Screen shot Спасибозаранее!

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Учитывая, сколько времени требуется для возврата запроса, я думаю, что это просто время ожидания и предполагается, что данных нет. Вы можете использовать httr, как предложил alistaire, или RCurl, чтобы просто получить данные с указанным timeout, а затем прочитать их.

if(!require(RCurl)) {install.packages("RCurl"); library(RCurl)}

McAlp <- getURL("https://nwis.waterdata.usgs.gov/ky/nwis/uv?cb_00065=on&format=rdb&site_no=03294500&period=&begin_date=1950-09-30&end_date=2030-12-31", timeout = 300) # Try without a timeout, then add one if needed. It worked for me without a timeout argument.

McAlpine <- read.delim(textConnection(McAlp), sep = "\t", stringsAsFactors = FALSE, skip = 40, header = FALSE)

head(McAlpine)
    V1      V2               V3  V4    V5 V6
1 USGS 3294500 2007-10-01 03:30 EDT 10.27  A
2 USGS 3294500 2007-10-01 03:45 EDT 10.25  A
3 USGS 3294500 2007-10-01 04:00 EDT 10.22  A
4 USGS 3294500 2007-10-01 04:15 EDT 10.21  A
5 USGS 3294500 2007-10-01 04:30 EDT 10.22  A
6 USGS 3294500 2007-10-01 04:45 EDT 10.29  A
0 голосов
/ 10 мая 2018

Итак, я действительно смог заставить его работать, разбив размер запроса на отдельные годы. Таблица будет загружаться из USGS, но я думаю, что по какой-то причине время R истекло.

McAlpine2007 <- read.delim(("https://nwis.waterdata.usgs.gov/ky/nwis/uv? 
cb_00065=on&format=rdb&site_no=03294500&period=&begin_date=2007-01- 
01&end_date=2007-12-31"), stringsAsFactors=FALSE, skip=40, header=FALSE)

McAlpine2008 <- read.delim(("https://nwis.waterdata.usgs.gov/ky/nwis/uv? 
cb_00065=on&format=rdb&site_no=03294500&period=&begin_date=2008-01- 
01&end_date=2008-12-31"), stringsAsFactors=FALSE, skip=40, header=FALSE)

rbind(McAlpine2007,McAlpine2008)
...