从函数体中删除双引号

时间:2015-12-10 23:35:06

标签: r

我在xy <- function(x){x^2+9*x}

中有一个功能

我希望以字符串x^2+9*x的形式返回,不显示前导/尾随空格。

我尝试了以下内容:

library(stringr)
library(magrittr)
g   <- function(x){x^2+9*x}
y1 <- g %>%
    deparse_function_body(.) %>%
    str_replace(pattern = "[[:punct:]]", "") %>% 
    noquote(.) %>%
    str_trim(.)
y1

这会返回[1] "" "x^2" "",而不是[1] "x^2+9*x"

请问有谁可以告诉我最简洁的方法吗?

1 个答案:

答案 0 :(得分:3)

您可以将body()deparse()一起使用。不需要包裹。

deparse(body(g)[[2]])
# [1] "x^2 + 9 * x"

好像你想做这样的事情 -

trimws(deparse(g)[3])
# [1] "x^2 + 9 * x"

我想其中任何一个都可以正常工作。