我希望能够打印通过管道传递的数据帧的名称.这可能吗?我可以.
printname <- function(df){
print(paste(substitute(df)))
}
printname(mtcars)
#[1] "mtcars"
Run Code Online (Sandbox Code Playgroud)
但是,它返回"." 当使用管道管道此功能时magrittr
.
mtcars %>% printname
# [1] "."
Run Code Online (Sandbox Code Playgroud)
在编写已记录的生产过程中使用的函数的自定义错误消息时,这将非常有用 - 如果日志中唯一的内容是".",则很难知道哪些内容失败了.
它可能足以返回原始调用,其中包括该mtcars %>%
部分.
MrF*_*ick 12
这是第一次尝试,它是一种黑客攻击,但似乎它可能会起作用.
find_chain_parts <- function() {
i <- 1
while(!("chain_parts" %in% ls(envir=parent.frame(i))) && i < sys.nframe()) {
i <- i+1
}
parent.frame(i)
}
printfirstname <- function(df){
ee <- find_chain_parts()
print(deparse(ee$lhs))
}
mtcars %>% printfirstname
# [1] "mtcars"
Run Code Online (Sandbox Code Playgroud)
该pipe
功能创建一个跟踪链部件的环境.我尝试在当前执行环境中查找此变量,然后使用lhs
存储在那里的信息在管道的开头找到符号.这没有经过充分测试.
归档时间: |
|
查看次数: |
598 次 |
最近记录: |