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