How to Address Factor Values with Quotations in R

时间:2016-10-20 19:45:44

标签: r

I'll appreciate if someone can describe this to me! My mind is about to blow up on this fundamental logical inconsistency!

> class(trlog$X.sce_status.[1])
[1] "factor"
> trlog$X.sce_status.[1]
[1] "Successful"
Levels: "Failed-CMD INF ERROR" "Failed-TRANS EXPIRED" "Successful"
> trlog$X.sce_status.[1] == as.character("Successful")
[1] FALSE

1 个答案:

答案 0 :(得分:5)

这里混淆的关键是R打印出factor变量元素的方式。如果构造一个简单的因子变量:

f <- factor("Successful")

并打印

f[1]
## [1] Successful
## Levels: Successful

你可以看到R打印出的级别名称没有引号。另一方面,如果你有一个(略微怪异的)因素,其中标签实际上包含引号,你会得到一个看似合理但却略有不同的结果:

g <- factor("\"Successful\"")
g
## [1] "Successful"
## Levels: "Successful"

如果您打印as.character的结果,这会变得更清晰一点(?),默认情况下 打印带引号:

as.character(f)
## [1] "Successful"
as.character(g)
## [1] "\"Successful\""

如果您想要从打印的表示中添加/减去引号,可以使用print(as.character(g),quote=FALSE)print(g,quote=TRUE)