我想要一个可以使用管道操作符从dplyr导出的函数.我没有使用magrittr.
df %>% my_function
Run Code Online (Sandbox Code Playgroud)
我如何获得df名称?如果我试试
my_function <- function(tbl){print(deparse(substitute(tbl)))}
Run Code Online (Sandbox Code Playgroud)
它返回
[1] "."
Run Code Online (Sandbox Code Playgroud)
虽然我想[1]"df"
有什么建议吗?
谢谢你在前进,
尼古拉
我有一个函数x_expression()打印传递给参数的表达式x.
pacman::p_load(magrittr, rlang)
x_expression <- function(x) {
print(enquo(x))
}
y <- 1
x_expression(y)
#> <quosure>
#> expr: ^y
#> env: global
y %>% x_expression()
#> <quosure>
#> expr: ^.
#> env: 0x7ff27c36a610
Run Code Online (Sandbox Code Playgroud)
所以你可以看到它知道y传递给它,但是当y管道输入时%>%,该函数返回打印..有没有办法y在它被管道输入的情况下恢复它,或者它是否永远消失了?简而言之,我想要的是一个类似于上面两种情况的x_expression()打印功能y.
这个问题确实类似于在R中通过管道传递的数据帧的获取名称,但它稍微更一般.这个人只想要数据框的名称,我想要表达式,无论它是什么.但是,相同的答案可能适用于两者.我不喜欢这个近似重复的问题的答案,答案的作者也不喜欢.
我试图将输入变量的名称捕获为字符串。这相当容易使用match.call(),但是在使用 magrittr 的管道时这不起作用。想知道是否有任何简单的修改可以让它在管道中工作以及函数是否被正常调用?
library(magrittr)
myfun <- function(fun){
print(match.call()$fun %>% as.character())
}
myfun(mean)
mean %>% myfun
myfun(iris)
iris %>% myfun
Run Code Online (Sandbox Code Playgroud)