gpt4 book ai didi

r - 使用管道时如何在R中获取函数输入名称

转载 作者:行者123 更新时间:2023-12-01 09:01:48 27 4
gpt4 key购买 nike

我试图将输入变量的名称捕获为字符串。这很容易使用 match.call()但是这在使用 magrittr 的管道时不起作用。想知道是否有任何简单的修改可以使它在管道中工作以及该函数是否被正常调用?

library(magrittr)
myfun <- function(fun){
print(match.call()$fun %>% as.character())
}

myfun(mean)
mean %>% myfun

myfun(iris)
iris %>% myfun

最佳答案

默认情况下管道操作符 %>%将输入变量名称作为点传递 "."到下一个函数,但您可以控制管道运算符 lhs 的输出在函数中传递输入变量的实际名称而不是点。请参阅以下功能(编辑为使用/不使用 %>%)

myfun <- function(x) {
x <- substitute(x)

if (x !="."){
print(deparse(x))
}else{

i <- 1
while(!("chain_parts" %in% ls(envir=parent.frame(i))) && i < sys.nframe()) {
i <- i+1
}
ee <- parent.frame(i)
print(deparse(ee$lhs))
}
}

mean %>% myfun()
[1] "mean"

myfun(mean)
[1] "mean"


希望能帮助到你。
-艾哈迈德·阿亨迪

关于r - 使用管道时如何在R中获取函数输入名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60465146/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com