Skip to content

Commit 6ba68c5

Browse files
author
Lindsay Carr
committed
set class at each step and only change class if there are all NAs
1 parent 1d36600 commit 6ba68c5

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

R/utils-list.R

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,35 @@ remove_field <- function(list, param){
3030

3131
strip_pts <- function(list, param){
3232
out <- c()
33-
# out.class <- 'numeric'
33+
out.class <- 'numeric'
3434
for (v in param){
3535
if (v %in% names(list) && !inherits(list[[v]], c('function','formula'))) {
3636
v.vals <- list[[v]]
3737
out <- append_keepTZ(out, v.vals, tz=attr(v.vals, 'tzone'))
38-
out.class <- ifelse(!all(is.na(v.vals)), class(v.vals), out.class)
38+
all.na <- all(is.na(v.vals))
39+
out.class <- ifelse(!all.na, class(v.vals), out.class)
40+
if(all.na){
41+
class(out) <- out.class
42+
}
3943
} else {
4044
if (any(sapply(list, is.list))){
4145
u.list <- unname_c(list[sapply(list, is.list)])
4246
if(v %in% names(u.list)) {
4347
v.vals <- u.list[[v]]
4448
out <- append_keepTZ(out, v.vals, tz=attr(v.vals, 'tzone'))
45-
out.class <- ifelse(!all(is.na(v.vals)), class(v.vals), out.class)
49+
all.na <- all(is.na(v.vals))
50+
out.class <- ifelse(!all.na, class(v.vals), out.class)
51+
if(all.na){
52+
class(out) <- out.class
53+
}
4654
} else if (any(sapply(u.list, function(x) any(names(x) %in% v)))) {
4755
v.vals <- u.list[[which(sapply(u.list, function(x) any(names(x) %in% v)))]][[v]]
4856
out <- append_keepTZ(out, v.vals, tz=attr(v.vals, 'tzone'))
49-
out.class <- ifelse(!all(is.na(v.vals)), class(v.vals), out.class)
57+
all.na <- all(is.na(v.vals))
58+
out.class <- ifelse(!all.na, class(v.vals), out.class)
59+
if(all.na){
60+
class(out) <- out.class
61+
}
5062
} else {
5163
out <- append_keepTZ(out, NA, tz=attr(out, "tzone"))
5264
}

0 commit comments

Comments
 (0)