rlang:在 tidyr 联合函数中引用 var
这是我的数据: df <- tibble::tribble( ~A, ~B, ~C, "a", "b", 2L, "a", "b", 4L, "c", "d", 3L, "c", "d", 5L ) var <- "AB" 我想得到这个输出: df1 <- df %>% unite("AB", c("A", "B")) %>% ... »
这是我的数据: df <- tibble::tribble( ~A, ~B, ~C, "a", "b", 2L, "a", "b", 4L, "c", "d", 3L, "c", "d", 5L ) var <- "AB" 我想得到这个输出: df1 <- df %>% unite("AB", c("A", "B")) %>% ... »
我想延迟 R 中函数参数的评估。示例: my_func <- function(FUN){print(FUN); print(FUN)} my_func(runif(1)) #> [1] 0.2833882 #> [1] 0.2833882 由reprex package (v0.2.1) 于 2019 年 7 月 21 日创建 这是因为 runif(1) 只被评估一次并... »
我有一个函数fun_1,它在其... 参数上使用substitute(),另一个函数fun_2 带有签名fun_2(...),它实现了模式do.call(fun_1, dots)。我希望fun_1() 在fun_2() 中看到... 传递给fun_2()。这是我正在尝试做的一个说明。 fun_1 <- function(...) { substitute(list(...))[-1] ... »
例子: library(dplyr) df <- tibble(a = c(10, 10, 10, 20, 20), b = c(1, 2, 10, 2, 4)) ## produces desired result: df %>% group_by(a) %>% summarize(mn = mean(b), md = media... »
我想创建一个名为eval_data 的函数供用户输入 数据帧列表 要应用于数据帧的dplyr 函数列表 要从每个数据框中选择的列列表: 这看起来像: eval_data <- function(data, dplyr_logic, select_vector) { data %>% # this doesn't work eval(dplyr_logic) ... »
我在使用 dplyr 重命名函数中的列时遇到困难。我已经找到了关于非标准评估和 enquo 使用的有用帖子(例如,http://dplyr.tidyverse.org/articles/programming.html 和 Changing names of resulting variables in custom dplyr function)。最终目标是使用该函数汇总每个组,然后将列重命名为... »
我想对dplyr 函数(比如count())使用具有默认NULL 值的可选参数。如果我对!!enquo() 使用标准过程,我会收到错误消息:error: Column NULL is unknown。 有趣的是,rlang/tidyverse 允许缺失值,所以一个技巧可能是在 NULL 时转换为缺失,但看起来很脏(尤其是如果我想在之后使用 facet_grid,它接受 NULL 但不缺失)。 ... »
我有两个函数:date_diff 和 group_stat。所以我已经阅读了这篇文章tidyverse 并尝试创建简单的函数并使用管道。 第一个函数创建一个difftime 并将它们命名为timex_minus_timey,但是当我将此结果传递到下一个函数时,我必须查看名称以便填写summary_var。有一个更好的方法吗? library(tidyverse) # set.seed(4... »
我写了一个函数来谴责我的数据进行一些 cox 分析。 一些数据 data <- structure(list(Death1 = c("t", "f", "f", "f", "f", "f", "t", "t", "f", "f", "f", "f", "f", "t", "f"), Death2 = c("t", "f", "f", "t", "f", "f", "t", "t", "f... »
我想创建一个函数myfun,它只能在另一个函数中使用,在我的例子中是dplyrs mutate 或summarise。我更不想依赖dplyrs 内部结构(例如mask$...)。 我想出了一个快速而肮脏的解决方法:一个函数search_calling_fn 检查调用堆栈中的所有函数名称并在调用函数中查找特定模式。 search_calling_fn <- function(pattern) ... »
我在访问 R 中的更新版本的包时遇到了一些问题。 在运行数据分析工作流时,我收到以下错误消息: 库(dplyr) 错误:loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) 中的“dplyr”的包或命名空间加载失败: namespace ‘rlang’ 0.2.1 已经加载,但是 >= 0.2.2 是... »
我正在编写一个将 plot_ly 用于饼图的函数。参数标签中的波浪号 (~) = ~ 与取消引用运算符 !! 冲突。这个问题有解决办法吗? pieplotr <- function (df, Property){ Property_Name <- enquo(Property) Pie <- plot_ly(df, labels = ~!!Pro... »
我正在尝试使用以下 glue 代码来创建信息丰富的错误消息 library(rlang) library(glue) my_function <- function(x) { UseMethod("my_function", x) } my_function.default <- function(x) { abort(glue( "Can't calculate... »
假设我想从涉及另一个表中的列的表达式创建一个新表。这很简单: library(rlang) library(purrr) from_exprs = function(tb, ...) { quos(...) %>% map_dfc(~ eval_tidy(., tb)) } 例子: > tb = data.frame(year = 2001:2005, mon... »
我很难理解将参数从函数传递到 R 函数的问题。我通常可以通过 !!rlang::sym(argument) 让它正常工作。 我想要做的是创建一个函数,让我可以自定义数据集中的哪一列,我想对给定的比较计算计数。 例如,我可能想要计算等于 9999 或大于 5 或小于或等于 5 的值的数量。此列也可以更改。 custom_count=function(dataset, expr){ ... »
问题描述 Sys.setenv 没有简单的接口来提供 LHS(环境变量名称)作为参数。如果想要动态定义应该设置什么环境变量,则需要元编程方法。 基础 R 方式 这个小辅助函数按预期工作。 setenv = function(var, value, quiet=TRUE) { stopifnot(is.character(var), !is.na(var), length(value)=... »
第一季度: sorting = function (table, column) { # mtcars[order(mpg),] return(table[order(column),]) } sorting(mtcars, "mpg") 等价于mtcars[order("mpg"),] 但不等于我想要得到的结果mtcars[order(mpg),],如何将其从字符串转换为列名。 ... »
使用旧的 select_() 函数,我可以将命名向量传递给 select 并立即更改位置和列名: my_data <- data_frame(foo = 0:10, bar = 10:20, meh = 20:30) my_newnames <- c("newbar" = "bar", "newfoo" = "foo") move_stuff <- function(... »
我正在开发一个自定义函数,其目标是为分组变量的所有组合运行一个函数 (..f),grouping.var 提供给定的数据帧,然后使用 broom 包将这些结果整理到数据帧中。 这是我编写的自定义函数。请注意,... 提供给 ..f,而 broom::tidy 方法的其他参数通过 tidy.args 列表提供。 # setup set.seed(123) library(tidyverse... »
我很难理解如何使用{{ }} 运算符在自定义函数中传递裸变量名。将运算符与 if 子句结合使用时出现错误。 此功能有效: f <- function(.data, .vars=NULL){ require(dplyr) df = select(.data, {{ .vars }}) print(head(df)) } f(iris, c(Species, Sepal.Lengt... »