使用R中的非常长的字符串创建公式

Jay*_*ara 4 r formula

我的情况是,我有一个充满列名的向量,用于非常大的数据帧.

让我们假设:x = c("Name", "address", "Gender", ......, "class" )[近似100个变量]

现在,我想创建一个我最终会用来创建一个公式HoeffdingTree.我用以下方法创建公式:

myformula <- as.formula(paste("class ~ ", paste(x, collapse= "+")))
Run Code Online (Sandbox Code Playgroud)

这会引发以下错误:

解析错误(text = x):: 1:360:意外'其他'1:e + spread + prayforsonni +只是+想要+ amp +争论+ blxcknicotine +情绪+现在+右+实际+ herapatra +必须+简单+吸+有+总是+饼干+有史以来+家居+越来越+漂亮+黑人+ +,他们多次+阿布+所有+ alliepickl

paste上述语句中的部分工作正常,但将其作为参数传递给as.formula抛出各种奇怪的问题.

Hon*_*Ooi 10

问题是你有R关键字作为列名.else是一个关键字,因此您不能将其用作常规名称.

一个简化的例子:

s <- c("x", "else", "z")
f <- paste("y~", paste(s, collapse="+"))
formula(f)
# Error in parse(text = x) : <text>:1:10: unexpected '+'
# 1: y~ x+else+
#              ^
Run Code Online (Sandbox Code Playgroud)

解决方案是用反引号"`"包装你的单词,以便R将它们视为非语法变量名.

f <- paste("y~", paste(sprintf("`%s`", s), collapse="+"))
formula(f)
# y ~ x + `else` + z
Run Code Online (Sandbox Code Playgroud)