当术语标签嵌入空格时,使用 reformulate()
所需的正确字符串解析是什么?
这有效:
reformulate(c("A", "B"), "Y")
Y ~ A + B
这些都失败了:
reformulate(c("A var", "B"), "Y")
reformulate(quote(c("A var", "B")), "Y")
reformulate(as.formula(quote(c("A var", "B"))), "Y")
预期结果:
Y ~ `A var` + B
# or
Y ~ `A var` + `B`
注意
我无法对反引号进行硬编码。这是一个更大的 Shiny 应用程序的一部分,因此,如果反引号是答案,我需要一种方法以编程方式执行此操作。
最佳答案
这里有一些使用符号而不是字符串的其他方法(因此不需要显式反引号)。
input <- "A var"
eval(bquote( Y ~ .(as.name(input)) + B))
# Y ~ `A var` + B
eval(substitute( Y ~ INPUT + B, list(INPUT = as.name(input))))
# Y ~ `A var` + B
library(rlang)
eval(expr(Y ~ !!sym(input) + B))
# Y ~ `A var` + B
关于r - 当变量嵌入空格时如何在 R 中使用重新公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54774832/