Skip to content

Commit c1c5ea4

Browse files
author
Lindsay Carr
committed
append by extracting tz & then reapplying, if tz=NULL it still works
1 parent b79e2e8 commit c1c5ea4

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

R/utils-list.R

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,24 +34,24 @@ strip_pts <- function(list, param){
3434
for (v in param){
3535
if (v %in% names(list) && !inherits(list[[v]], c('function','formula'))) {
3636
v.vals <- list[[v]]
37-
out <- append_keepclass(out, v.vals)
37+
out <- append_keepTZ(out, v.vals, tz=attr(v.vals, 'tzone'))
3838
out.class <- ifelse(!all(is.na(v.vals)), class(v.vals), out.class)
3939
} else {
4040
if (any(sapply(list, is.list))){
4141
u.list <- unname_c(list[sapply(list, is.list)])
4242
if(v %in% names(u.list)) {
4343
v.vals <- u.list[[v]]
44-
out <- append_keepclass(out, v.vals)
44+
out <- append_keepTZ(out, v.vals, tz=attr(v.vals, 'tzone'))
4545
out.class <- ifelse(!all(is.na(v.vals)), class(v.vals), out.class)
4646
} else if (any(sapply(u.list, function(x) any(names(x) %in% v)))) {
4747
v.vals <- u.list[[which(sapply(u.list, function(x) any(names(x) %in% v)))]][[v]]
48-
out <- append_keepclass(out, v.vals)
48+
out <- append_keepTZ(out, v.vals, tz=attr(v.vals, 'tzone'))
4949
out.class <- ifelse(!all(is.na(v.vals)), class(v.vals), out.class)
5050
} else {
51-
out <- append(out, NA)
51+
out <- append_keepTZ(out, NA, tz=attr(out, "tzone"))
5252
}
5353
} else
54-
out <- append(out, NA)
54+
out <- append_keepTZ(out, NA, tz=attr(out, "tzone"))
5555
}
5656

5757
}
@@ -78,11 +78,9 @@ strip_pts2 <- function(data, param) {
7878

7979
# append without losing timezones for the case where
8080
# append.vals is POSIX and base.vals is NULL
81-
append_keepclass <- function(base.vals, append.vals){
82-
if(is.null(base.vals)){
83-
vals <- append.vals
84-
} else {
85-
vals <- append(base.vals, append.vals)
86-
}
81+
# also handles adding NA to POSIXct vals
82+
append_keepTZ <- function(base.vals, append.vals, tz=NULL){
83+
vals <- append(base.vals, append.vals)
84+
attr(vals,"tzone") <- tz
8785
return(vals)
8886
}

0 commit comments

Comments
 (0)