在 R 的函数调用中记录传递的值

recording the passed value in a function call in R

当我调用一个函数时,我想在函数的输出中记录一个或多个传递给函数的参数。当函数参数指向另一个对象时,我不知道该怎么做。我尝试了 quoexpr 等的各种组合...但似乎缺少将字符串变量传递到 data.frame 的确切语法,如下所示:

 library(tidyverse)
 awesomedf <- data.frame(a = 1:5, b= "hihi")
 
 myfunction <- function(usedata = awesomedf){
   usedata %>% 
     summarize(meancol1 = mean(a)) %>% 
     mutate(datasetused = deparse(substitute(usedata)))
 }
 
 myfunction()

Returns:

  meancol1 datasetused
1        3     usedata

我想看的是:

  meancol1 datasetused
1        3     awesomedf

使用顶部的 deparse/substitute 在它成为计算表达式之前捕获它

myfunction <- function(usedata = awesomedf){ 
val <- deparse(substitute(usedata))
  usedata %>% 
    summarize(meancol1 = mean(a)) %>% 
  mutate(datasetused = val)
 }

-测试

myfunction()
#   meancol1 datasetused
#1        3   awesomedf