【问题标题】:Convert function into string将函数转换为字符串
【发布时间】:2015-10-22 21:39:41
【问题描述】:

我已经定义了一个变量,它是一个函数列表。

var_function <- mean

我可以使用任何功能。如何将函数 mean 转换为字符串?感谢您的任何建议。如果我的问题不清楚,请告诉我。

【问题讨论】:

  • 我想唯一不清楚的是您是否要将mean的定义作为一个字符,或者您是否希望将函数的名称(即"mean")作为一个字符?跨度>

标签: r


【解决方案1】:

您可以使用deparse() 将任何函数转换为逐行字符向量。

deparse(setNames)
# [1] "function (object = nm, nm) "
# [2] "{"                          
# [3] "    names(object) <- nm"    
# [4] "    object"                 
# [5] "}"  

【讨论】:

  • 谢谢你。我正在寻找一种将函数转换为字符串的快速方法,这让我找到了paste0(deparse(fun), collapse = " ")
  • deparse() 非常适合这个特定问题,其中var_function 作为变量提供。但是,如果它以字符串的形式提供("var_function"),则可以使用deparse(get())deparse(get("var_function"))
【解决方案2】:

从 R 4.0 开始,还有deparse1()。这会将函数作为单个字符串返回。

f <- function(x) {
  x + 2
}

strf <- deparse1(f)

strf
#> [1] "function (x)  {     x + 2 }"

要将函数字符串恢复为真正的函数,请使用eval()str2lang()

f2 <- eval(str2lang(strf))

f2(4)

#> 6

【讨论】:

    最近更新 更多