我的情况是,我有一个向量,其中包含一个非常大的数据框的列名。
我们假设:x = c("Name", "address", "Gender", ......, "class" )
[约100个变量]
现在,我想创建一个公式,我最终将使用它来创建 HoeffdingTree
.
我正在使用以下方法创建公式:
myformula <- as.formula(paste("class ~ ", paste(x, collapse= "+")))
这会引发以下错误:
Error in parse(text = x) : :1:360: unexpected 'else' 1:e+spread+prayforsonni+just+want+amp+argue+blxcknicotine+mood+now+right+actually+herapatra+must+simply+suck+there+always+cookies+ever+everything+getting+nice+nigga+they+times+abu+all+alliepickl
paste
上述语句中的部分工作正常,但将其作为参数传递给 as.formula
正在抛出各种奇怪的问题。
最佳答案
问题是你有 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+
# ^
解决方案是将您的单词用反引号“`”括起来,以便 R 将它们视为非语法变量名。
f <- paste("y~", paste(sprintf("`%s`", s), collapse="+"))
formula(f)
# y ~ x + `else` + z
关于r - 在 R 中使用很长的字符串创建公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29555473/