r - 在 R 中使用很长的字符串创建公式

标签 r formula

我的情况是,我有一个向量,其中包含一个非常大的数据框的列名。

我们假设: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/

相关文章:

r - 在 R 中展平命名列表

R构建稀疏矩阵

c++ - 使用斯特林的阶乘公式

colors - 如何辨别浅色、中色、深色?

R相当于Stata的Absorb

r - 如何根据 R 中 data.table 中具有对称值的两列删除某些行?

Python3 - 标识符中的无效字符(公式内)

excel - 使用一个单元格的引用来创建相对引用

excel - 如何根据给定月份对 Excel 列中的值求和?

r - 团体票吗?