Skip to content

Commit ac12b3c

Browse files
author
Lindsay Carr
committed
append without losing timezones in strip_pts
1 parent 8a1eb23 commit ac12b3c

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

R/utils-list.R

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +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(out, v.vals)
37+
# append to out without losing timezones when it is a date/POSIX
38+
if(is.null(out)){
39+
out <- v.vals
40+
} else {
41+
out <- append(out, v.vals)
42+
}
3843
out.class <- ifelse(!all(is.na(v.vals)), class(v.vals), out.class)
3944
} else {
4045
if (any(sapply(list, is.list))){
4146
u.list <- unname_c(list[sapply(list, is.list)])
4247
if(v %in% names(u.list)) {
4348
v.vals <- u.list[[v]]
44-
out <- append(out, v.vals)
49+
out <- append_keepclass(out, v.vals)
4550
out.class <- ifelse(!all(is.na(v.vals)), class(v.vals), out.class)
4651
} else if (any(sapply(u.list, function(x) any(names(x) %in% v)))) {
4752
v.vals <- u.list[[which(sapply(u.list, function(x) any(names(x) %in% v)))]][[v]]
48-
out <- append(out, v.vals)
53+
# append to out without losing timezones when it is a date/POSIX
54+
out <- append_keepclass(out, v.vals)
4955
out.class <- ifelse(!all(is.na(v.vals)), class(v.vals), out.class)
5056
} else {
5157
out <- append(out, NA)
@@ -76,3 +82,13 @@ strip_pts2 <- function(data, param) {
7682
return(out)
7783
}
7884

85+
# append without losing timezones for the case where
86+
# append.vals is POSIX and base.vals is NULL
87+
append_keepclass <- function(base.vals, append.vals){
88+
if(is.null(base.vals)){
89+
vals <- append.vals
90+
} else {
91+
vals <- append(base.vals, append.vals)
92+
}
93+
return(vals)
94+
}

0 commit comments

Comments
 (0)