osem_measurements: use factors for paged reqs

pull/17/head
Norwin 7 years ago
parent dc7b86d391
commit a65cb9a280
Signed by: norwin
GPG Key ID: 24BC059DE24C43A3

@ -32,7 +32,8 @@ get_measurements_ = function (..., endpoint) {
# parse the CSV response manually & mute readr # parse the CSV response manually & mute readr
suppressWarnings({ suppressWarnings({
result = readr::read_csv(result, col_types = readr::cols( result = readr::read_csv(result, col_types = readr::cols(
.default = readr::col_factor(NULL), # factor as default would raise issues with concatenation of multiple requests
.default = readr::col_character(),
createdAt = readr::col_datetime(), createdAt = readr::col_datetime(),
value = readr::col_double(), value = readr::col_double(),
lat = readr::col_double(), lat = readr::col_double(),

@ -140,8 +140,8 @@ paged_measurements_req = function (query) {
# auto paging: make a request for one 31day interval each (max supprted length) # auto paging: make a request for one 31day interval each (max supprted length)
# generate a list 31day intervals # generate a list 31day intervals
from = query$from from = query$`from-date`
to = query$to to = query$`to-date`
dates = list() dates = list()
while (from < to) { while (from < to) {
in31days = from + as.difftime(31, units = 'days') in31days = from + as.difftime(31, units = 'days')
@ -150,7 +150,7 @@ paged_measurements_req = function (query) {
} }
# use the dates as pages for multiple requests # use the dates as pages for multiple requests
lapply(dates, function(page) { df = lapply(dates, function(page) {
query$`from-date` = date_as_isostring(page$from) query$`from-date` = date_as_isostring(page$from)
query$`to-date` = date_as_isostring(page$to) query$`to-date` = date_as_isostring(page$to)
res = do.call(get_measurements_, query) res = do.call(get_measurements_, query)
@ -159,4 +159,8 @@ paged_measurements_req = function (query) {
res res
}) %>% }) %>%
dplyr::bind_rows() dplyr::bind_rows()
# coerce all character columns (sensorId, unit, ...) to factors AFTER binding
df[sapply(df, is.character)] <- lapply(df[sapply(df, is.character)], as.factor)
df
} }

Loading…
Cancel
Save