【问题标题】:Change TRUE and FALSE to Yes and No将 TRUE 和 FALSE 更改为 Yes 和 No
【发布时间】:2013-09-09 16:12:47
【问题描述】:

我有以下 R 脚本:

x <- c('PE', 'MG', 'SP', 'GO', 'ES', 'PB', 'DF')
y <- c('PB', 'MG', 'SP', 'GO', 'ES', 'SE', 'DF')
z <- x == y

这样

> z
[1] FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE

但是,我希望 z(以及脚本后面的其他逻辑变量)改为显示“是”和“否”,所以我进行了重新编码:

z <- ifelse(z == TRUE, "Yes", "No")

有什么方法可以跳过这个额外的步骤,即定义z 显示“是”而不是“真”和“否”而不是“假”。

当然,我也可以使用 z &lt;- ifelse(x == y, "Yes", "No"),但我仍在寻找类似 @​​987654328@ 函数中的参数之类的东西,我可以只定义一次并让它工作到脚本结束(或直到我重新定义参数)。在?options 上找不到类似的内容。

【问题讨论】:

  • 这不能解决您的问题,但您不需要==,因为变量已经是logical 类型。你可以简单地做z = ifelse(z, 'Yes', 'No')
  • 我继续说你的问题的答案是ifelse(FALSE, 'Yes', 'No')
  • @SeñorO,感谢您的输入,我忘记了诀窍。节省一些代码字节总是好的。
  • 一个非常相似的问题是answer here
  • 我只是在说我不认为你可以做你想做的事。用它输出的内容替换我的代码(即“否”)

标签: r boolean logical-operators


【解决方案1】:

另一种方法:

c('No', 'Yes')[z + 1]

【讨论】:

    【解决方案2】:

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

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

    z <- factor(x==y, labels=c("No", "Yes"))
    
    > z
    [1] No  Yes Yes Yes Yes No  Yes
    Levels: No Yes
    

    【讨论】:

    • 我猜默认的 TRUE/FALSE 是为了方便快速了解每个对象所属的类,但是当我需要以表格的形式呈现数据时,它看起来很奇怪,特别是因为我的报告不是用英文写的。
    • 然后像你所做的那样在本地进行更改似乎比尝试全局更改输出更好。
    • 我认为其背后的一个主要原因是logical 类型用于子集等:x[z] 适用于 logical 类型,但不适用于 factor
    • @wleoncio 您是否正在运行R 并将语言环境设置为您的语言?如果你担心的只是语言,你为什么用英语“yes/no”而不是“Bəli/ Xeyr”之类的?
    • @CarlWitthoft,我用英文运行 R,否则我会遇到小数分隔符的问题。尽管在巴西我们使用逗号,但我使用的数据集几乎总是使用句号(另外,我只是喜欢尽可能使用他们的母语)。在我的实际问题中,我使用“Sim/Não”而不是“Yes/No”,我只是想让这个问题更普遍。 ;)
    猜你喜欢
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 2018-07-21
    • 2018-04-08
    • 2011-04-09
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多