【发布时间】:2017-03-02 16:10:45
【问题描述】:
我希望能够打印通过管道传递的数据帧的名称。这可能吗?我可以。
printname <- function(df){
print(paste(substitute(df)))
}
printname(mtcars)
#[1] "mtcars"
但是,它返回“。”当此函数使用magrittr 管道进行管道传输时。
mtcars %>% printname
# [1] "."
这在编写记录生产过程中使用的函数的自定义错误消息时会很有帮助——如果日志中唯一的内容是“.”,那么很难知道哪里出错了。
返回原始调用可能就足够了,其中包括mtcars %>% 片段。
【问题讨论】:
-
如何在不知道data.frame名称的情况下启动管道?
get?这里缺少一些上下文。 -
你在写代码的时候知道名字,但是通过管道调用的函数不知道名字,所以它们不会引发信息性错误。您希望运行时断言引发包含导致错误的数据帧名称的错误。
-
公平。现在想想,行号也不错。