我正在学习R的e1071软件包来执行朴素的贝叶斯分析。根据{{3}}教程,包的naieveBayes方法接受一个名为“formula”的输入 - 它表示“表单类的公式~x1 + x2 + ..”
如何制作这样的公式?我有一个包含性别,工作和收入列的数据集,并希望对每个维度/因素进行分析。我是否需要以某种方式将它们变成公式对象? (我对R很新,所以我不清楚R甚至支持像公式这样的特定数据类型。)
答案 0 :(得分:1)
只需输入~ x1 + x2
即可创建类formula
的对象。
查看?lm
的基本想法示例。特定于域的语言非常灵活,因此不同的模型以不同的方式使用它。
例如:
dat <- data.frame(x=runif(10), y=runif(10))
lm( y ~ x, data=dat)
f <- y ~ x
class(f)
lm( f, data=dat )
答案 1 :(得分:0)
通过使用~
函数创建公式。它可以用作前缀运算符或中缀运算符:
form <- ~ atom
form <- atomA ~ atomB
is.function(`~`)
[1] TRUE
class(form[[2]])
#[1] "name"
is.language(form)
#[1] TRUE
is.language(form[[2]])
#[1] TRUE
就像函数一样,公式对象是用环境创建的:
str(form)
#Class 'formula' length 3 atomA ~ atomB
# ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
不同的函数对使用哪种形式(前缀或中缀)有不同的假设。您可以使用列表索引按位置编号提取组件。第一个元素将始终是波形符操作符。
form[[1]]
# returns: ~>
form[[2]]
# atomA
form[[3]]
# atomB
您可以使用as.character
将公式降级为字符对象,或将字符对象提升为as.formula
的公式。 formula
函数不会创建公式,而是一个通用函数,它具有不同的分类对象的特定行为,通常用于从回归对象中提取公式。
methods(formula)
#-----------
[1] formula.character*
[2] formula.data.frame*
[3] formula.default*
[4] formula.formula*
[5] formula.glm*
[6] formula.lm*
[7] formula.nls*
[8] formula.quantmod*
[9] formula.summary.formula.cross
方法(公式)的结果将根据您当时加载的包而有所不同。 [10] formula.terms *