我的情况是,我有一个充满列名的向量,用于非常大的数据帧.
让我们假设: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)