51 lines
1.3 KiB
R
51 lines
1.3 KiB
R
|
|
#' @title Convert a \code{data.frame} to a \code{list}
|
|
#'
|
|
#' @description Convert data to a format suitable for ApexCharts.js
|
|
#'
|
|
#' @param data A \code{data.frame} or an object coercible to \code{data.frame}.
|
|
#' @param add_names Use names of columns in output. Can be logical to
|
|
#' reuse \code{data} names or a character vector of new names.
|
|
#'
|
|
#' @export
|
|
#' @importFrom stats setNames
|
|
#'
|
|
parse_df <- function(data, add_names = FALSE) {
|
|
data <- as.data.frame(data)
|
|
names_ <- names(data)
|
|
l <- lapply(
|
|
X = data[],
|
|
FUN = function(x) {
|
|
if (inherits(x, "Date")) {
|
|
# as.numeric(x) * 86400000
|
|
format(x)
|
|
} else if (inherits(x, "POSIXt")) {
|
|
as.numeric(x) * 1000
|
|
} else if (inherits(x, "factor")) {
|
|
as.character(x)
|
|
} else {
|
|
# if (!identical(add_names, FALSE)) {
|
|
# formatNoSci(x)
|
|
# } else {
|
|
# x
|
|
# }
|
|
x
|
|
}
|
|
}
|
|
)
|
|
ll <- lapply(
|
|
X = seq_len(nrow(data)),
|
|
FUN = function(i) {
|
|
res <- lapply(l, `[[`, i)
|
|
if (identical(add_names, FALSE)) {
|
|
res <- unname(res)
|
|
}
|
|
if (is.character(add_names) & length(add_names) == length(names_)) {
|
|
res <- setNames(res, nm = add_names)
|
|
}
|
|
return(res)
|
|
}
|
|
)
|
|
return(ll)
|
|
}
|