Skip to content

Commit

Permalink
Merge pull request #413 from lindsaycarr/master
Browse files Browse the repository at this point in the history
append without losing timezones in strip_pts
  • Loading branch information
ldecicco-USGS authored Nov 15, 2016
2 parents 982628f + 6ba68c5 commit 745a3b0
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 10 deletions.
38 changes: 29 additions & 9 deletions R/utils-list.R
Original file line number Diff line number Diff line change
Expand Up @@ -34,28 +34,40 @@ strip_pts <- function(list, param){
for (v in param){
if (v %in% names(list) && !inherits(list[[v]], c('function','formula'))) {
v.vals <- list[[v]]
out <- append(out, v.vals)
out.class <- ifelse(!all(is.na(v.vals)), class(v.vals), out.class)
out <- append_keepTZ(out, v.vals, tz=attr(v.vals, 'tzone'))
all.na <- all(is.na(v.vals))
out.class <- ifelse(!all.na, class(v.vals), out.class)
if(all.na){
class(out) <- out.class
}
} else {
if (any(sapply(list, is.list))){
u.list <- unname_c(list[sapply(list, is.list)])
if(v %in% names(u.list)) {
v.vals <- u.list[[v]]
out <- append(out, v.vals)
out.class <- ifelse(!all(is.na(v.vals)), class(v.vals), out.class)
out <- append_keepTZ(out, v.vals, tz=attr(v.vals, 'tzone'))
all.na <- all(is.na(v.vals))
out.class <- ifelse(!all.na, class(v.vals), out.class)
if(all.na){
class(out) <- out.class
}
} else if (any(sapply(u.list, function(x) any(names(x) %in% v)))) {
v.vals <- u.list[[which(sapply(u.list, function(x) any(names(x) %in% v)))]][[v]]
out <- append(out, v.vals)
out.class <- ifelse(!all(is.na(v.vals)), class(v.vals), out.class)
out <- append_keepTZ(out, v.vals, tz=attr(v.vals, 'tzone'))
all.na <- all(is.na(v.vals))
out.class <- ifelse(!all.na, class(v.vals), out.class)
if(all.na){
class(out) <- out.class
}
} else {
out <- append(out, NA)
out <- append_keepTZ(out, NA, tz=attr(out, "tzone"))
}
} else
out <- append(out, NA)
out <- append_keepTZ(out, NA, tz=attr(out, "tzone"))
}

}
class(out) <- out.class
# class(out) <- out.class
return(out)
}

Expand All @@ -76,3 +88,11 @@ strip_pts2 <- function(data, param) {
return(out)
}

# append without losing timezones for the case where
# append.vals is POSIX and base.vals is NULL
# also handles adding NA to POSIXct vals
append_keepTZ <- function(base.vals, append.vals, tz=NULL){
vals <- append(base.vals, append.vals)
attr(vals,"tzone") <- tz
return(vals)
}
5 changes: 4 additions & 1 deletion R/utils-side.R
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,10 @@ set_side_lim <- function(args, side, side.num){
if(any(free.lim)){
side.vals <- strip_pts(args, include)
if (any(!is.na(side.vals))){
data.range <- range(c(side.vals[is.finite(side.vals)], side$lim), na.rm = TRUE)
data.range <- range(append_keepTZ(base.vals=side.vals[is.finite(side.vals)],
append.vals=side$lim,
tz=attr(side.vals, 'tzone')),
na.rm = TRUE)
data.range[!free.lim] <- side$lim[!free.lim]
side$lim <- data.range
}
Expand Down

0 comments on commit 745a3b0

Please sign in to comment.