Skip to content

Commit f010022

Browse files
committed
put atomicclass coercion in a common function
1 parent a7a9623 commit f010022

2 files changed

Lines changed: 17 additions & 16 deletions

File tree

R/read.R

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,7 @@ read_cells <- function(drfile, sheet, variables, translate = FALSE, translations
2222
}
2323
})
2424
result <- stats::setNames(result, sapply(variables, function(x) x$name))
25-
lapply(result, function(y) {
26-
switch(atomicclass,
27-
"character" = as.character(y),
28-
"numeric" = as.numeric(y),
29-
"integer" = as.integer(y),
30-
"logical" = as.logical(y),
31-
"date" = as.integer(y))
32-
})
25+
lapply(result, coerce, atomicclass)
3326
}
3427

3528
#' Read keyvalue pair formatted data from a spreadsheet
@@ -47,14 +40,7 @@ read_keyvalue <- function(drfile, sheet, range, translate = FALSE, translations
4740
if (translate) {
4841
keyvalue$key <- long_to_shortnames(keyvalue$key, translations)
4942
}
50-
coerce <- function(x) {
51-
switch(atomicclass,
52-
"character" = as.character(x),
53-
"numeric" = as.numeric(x),
54-
"integer" = as.integer(x),
55-
"logical" = as.logical(x))
56-
}
57-
kvlist <- lapply(keyvalue$value, coerce)
43+
kvlist <- lapply(keyvalue$value, coerce, atomicclass)
5844
names(kvlist) <- keyvalue$key
5945
kvlist
6046
}

R/utils.R

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,18 @@ star_to_number <- function(x) {
4343
has_star <- function(x) {
4444
stringr::str_detect(x, "[*x?]")
4545
}
46+
47+
48+
#' Coerce based on atomicclass
49+
#' @param x A vector
50+
#' @param atomicclass A character string indicating the atomic class
51+
#' @return A vector of the specified atomic class
52+
#' @noRd
53+
coerce <- function(x, atomicclass) {
54+
switch(atomicclass,
55+
"character" = as.character(x),
56+
"numeric" = as.numeric(x),
57+
"integer" = as.integer(x),
58+
"logical" = as.logical(x),
59+
"date" = as.integer(x))
60+
}

0 commit comments

Comments
 (0)