Nothing
assert_file <- function(x) {
if (file.exists(x)) {
return(invisible())
}
cat2("File ", shQuote(x), " does not exist", level = "FATAL")
}
assert_dir <- function(x) {
if (dir.exists(x)) {
return(invisible())
}
cat2("Path ", shQuote(x), " is not a directory", level = "FATAL")
}
assert_file_scalar <- function(x, allow_decimal = FALSE) {
assert_file(x)
y <- readLines(x, n = 1, warn = FALSE)
is_scalar <- FALSE
if (allow_decimal) {
is_scalar <- str_detect(y, "^[0-9]*[.]{0,1}[0-9]*$") && str_detect(y, "[0-9]+")
} else {
is_scalar <- str_detect(y, "^[0-9]+$")
}
if ( !is_scalar ) {
cat2("File ", shQuote(x), " contains no ", ifelse(allow_decimal, "number", "integer"),
" of length 1", level = "FATAL")
}
return(invisible())
}
dir_create <- function(x, showWarnings = FALSE, recursive = TRUE, check = TRUE) {
if (!dir.exists(x)) {
dir.create(x, showWarnings = showWarnings, recursive = recursive)
}
if (check && !dir.exists(x)) {
cat2("Cannot create directory at ", shQuote(x), level = "FATAL")
}
invisible(normalizePath(x))
}
file_create <- function(x, showWarnings = FALSE, recursive = TRUE) {
if (!file.exists(x)) {
dir <- dirname(x)
if ( recursive && !dir.exists(dir) ) {
dir_create(dir)
}
file.create(x, showWarnings = showWarnings)
}
invisible(normalizePath(x))
}
microtime <- function() {
strftime(Sys.time(), "%Y-%m-%d %H:%M:%OS9", usetz = TRUE)
}
remove_empty_dir <- function(path, all.files = TRUE, recursive = FALSE, verbose = FALSE) {
if (!dir.exists(path)) { return() }
sub_files <- list.files(
path = path,
recursive = FALSE,
all.files = all.files,
include.dirs = TRUE,
no.. = TRUE,
full.names = TRUE
)
if ( recursive ) {
if (length(sub_files) > 0L) {
sub_dirs <- sub_files[dir.exists(sub_files)]
for (dir in sub_dirs) {
Recall(dir, all.files = all.files, recursive = recursive)
}
sub_files <- list.files(path = path, recursive = FALSE, all.files = all.files, include.dirs = TRUE, no.. = TRUE, full.names = TRUE)
}
}
if (!length(sub_files)) {
if (verbose) {
message("Removing empty folder: ", path)
}
unlink(path, recursive = TRUE, force = TRUE)
}
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.