This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
remap <- function(.x, .f, ...) { | |
.f <- lowliner:::as_function(.f) | |
if (inherits(.f, "fseq")) { | |
# Handle magrittr's functional sequences | |
f_env <- environment(.f) | |
f_env$`_function_list` <- map(f_env$`_function_list`, ~ { | |
env <- new.env(parent = environment(.)) | |
environment(.) <- env | |
. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
set_groups <- function(.d, .cols = NULL) { | |
stopifnot(is.data.frame(.d)) | |
if (is.null(.cols)) { | |
return(group_by_(.d, .dots = list())) | |
} | |
if (is.numeric(.cols)) { | |
.cols <- names(.d)[.cols] | |
} | |
.cols %>% map_call(dplyr::group_by_, .data = .d) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
### Install monad-aware magrittr | |
devtools::dev_mode(TRUE) | |
devtools::install_github("lionel-/magrittr", ref = "monads") | |
### Monadic Infrastructure | |
bind <- function(x, fun, ...) { | |
UseMethod("bind") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library("rlang") | |
#' @import rlang | |
`%>%` <- function(x, y) { | |
lhs <- rlang:::captureArg(x) | |
lhs_value <- eval_bare(lhs$expr, lhs$env) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
depend <- function(..., character.only = FALSE) { | |
# Mimic library()'s UI | |
if (character.only) { | |
packages <- c(...) | |
} else { | |
packages <- substitute(c(...))[-1] | |
if (!all(vapply(packages, is.symbol, logical(1)))) { | |
stop("Can't supply expressions if `character.only` is FALSE") | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Actually does not work because quosured magrittr pronouns are not | |
# evaluated in the right environment | |
library("magrittr") | |
library("rlang") | |
# Anticipate renaming of `quo_is_lang()` in rlang | |
quo_is_call <- quo_is_lang |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
truncate_len <- function(x, n) { | |
if (length(x) < n) { | |
stop("Can't truncate vector to the given length because it is already shorter") | |
} | |
x[seq_len(n)] | |
} | |
truncate_along <- function(x, y) { | |
truncate_len(x, length(y)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Simple DT wrapper | |
summarise <- function(data, j, by) { | |
data <- data.table::as.data.table(data) | |
data[ | |
i = , | |
j = eval(substitute(j)), | |
by = eval(substitute(by)) | |
] | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# The general idea is to supply a recoding specification through a | |
# data frame of keys and values. They keys are a generalisation of | |
# names, they can be any type. | |
keys <- function(key, value) { | |
tibble::tibble(.key = key, .value = value) | |
} | |
dribbleys <- function(...) { | |
tibble::tribble(~ .key, ~ .value, ...) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
makeDelayedBinding <- function(sym, | |
expr, | |
eval.env = parent.frame(1), | |
assign.env = parent.frame(1)) { | |
expr <- substitute(expr) | |
value <- NULL | |
forced <- FALSE | |
forceDelayed <- function() { |
OlderNewer