将TRUE和FALSE更改为是和否

Wal*_*cio 2 boolean r logical-operators

我有以下R脚本:

x <- c('PE', 'MG', 'SP', 'GO', 'ES', 'PB', 'DF')
y <- c('PB', 'MG', 'SP', 'GO', 'ES', 'SE', 'DF')
z <- x == y
Run Code Online (Sandbox Code Playgroud)

以便

> z
[1] FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
Run Code Online (Sandbox Code Playgroud)

但是,我希望z(以及脚本中的其他逻辑变量)显示"是"和"否",所以我执行此重新编码:

z <- ifelse(z == TRUE, "Yes", "No")
Run Code Online (Sandbox Code Playgroud)

有没有办法跳过这个额外的步骤,即定义zshow"Yes"而不是"TRUE"和"No"而不是"FALSE".

当然,我也可以这样做z <- ifelse(x == y, "Yes", "No"),但我仍然在寻找类似于options()我可以定义一次的函数内部的参数,并让它工作到脚本结束(或直到我重新定义参数).找不到类似的东西?options.

Señ*_*r O 10

据我所知,没有办法覆盖R打印TRUEFALSE逻辑对象的事实(我个人觉得这很好).

您正在寻找的最接近的解决方案可能是因子转换:

z <- factor(x==y, labels=c("No", "Yes"))

> z
[1] No  Yes Yes Yes Yes No  Yes
Levels: No Yes
Run Code Online (Sandbox Code Playgroud)

  • @CarlWitthoft,我用英语运行R,否则我会遇到小数分隔符的问题.即使在巴西我们使用逗号,我使用的数据集几乎总是使用句号(另外,我只是喜欢用他们的母语尽可能地使用它们).在我的实际问题中,我使用"Sim /Não"代替"是/否",我只是想让问题更具普遍性.;) (2认同)

edd*_*ddi 7

另一种方法:

c('No', 'Yes')[z + 1]
Run Code Online (Sandbox Code Playgroud)