r - 如何将R公式转换为文本?

标签 r r-formula

我在处理公式时遇到了与处理文本一样的问题。我想做的是将公式连接到图表的标题。但是,当我尝试像处理文本一样使用公式时,我失败了:

model <- lm(celkem ~ rok + mesic)
formula(model)
# celkem ~ rok + mesic

这很好。现在我想构建像 "my text celkem ~ rok + mesic" 这样的字符串 - 这就是问题所在:

paste("my text", formula(model))
# [1] "my text ~"           "my text celkem"      "my text rok + mesic"

paste("my text", as.character(formula(model)))
# [1] "my text ~"           "my text celkem"      "my text rok + mesic"

paste("my text", toString(formula(model)))
# [1] "my text ~, celkem, rok + mesic"

现在我看到gtools包中有一个sprint函数,但我认为这是一个非常基本的东西,值得在默认环境中解决!!

最佳答案

来自包formula.tools的简短解决方案,作为函数as.character.formula:

frm <- celkem ~ rok + mesic
Reduce(paste, deparse(frm))
# [1] "celkem ~ rok + mesic"

library(formula.tools)
as.character(frm)
# [1] "celkem ~ rok + mesic"

Reduce 在公式较长的情况下可能很有用:

frm <- formula(paste("y ~ ", paste0("x", 1:12, collapse = " + ")))

deparse(frm)
# [1] "y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + "
# [2] "    x12"                                                      
Reduce(paste, deparse(frm))
# [1] "y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 +      x12"

这是因为?deparse中的width.cutoff = 60L

关于r - 如何将R公式转换为文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14671172/

相关文章:

R:创建一个行数未知的矩阵

r - R 公式中的条件 ( | )

r - R公式y~1是什么意思?

r - 查找多列具有相同值的行

R: makePSOCKcluster 超线程 50% CPU 核心

R:修补包函数并重新加载基础库

r - 将字符验证为文件路径?

r - 如何用两项替换 R 公式中的一项?

r - 具有动态变量数的公式