R用"on"或"off"替换逻辑向量

Shu*_*huo 1 replace r vector

我正在尝试创建一个衬垫,它将基于true或false替换具有"on"或"off"的逻辑向量.

我能想到的最好的是使用2 gsubs.

假设我有矢量tmp

tmp <- sample(100,100)
Run Code Online (Sandbox Code Playgroud)

我可以用

blah <- tmp > 50
blah <- gsub(FALSE, "no", blah)
blah <- gsub(TRUE, "yes", blah)
Run Code Online (Sandbox Code Playgroud)

实现我想要的,但我敢打赌,这是一个更优雅的解决方案.

pin*_*ing 11

使用ifelse:

blah <- ifelse(tmp > 50, "yes", "no")
Run Code Online (Sandbox Code Playgroud)


akr*_*run 7

尝试

r1 <- c('no', 'yes')[(tmp>50)+1]
identical(r1, blah)
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)

要么

 r2 <- as.character(factor(tmp>50, labels=c('no', 'yes')))
 identical(r1, r2)
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)

要么

 library(qdap)
 r3 <-  mgsub(c(FALSE, TRUE), c('no', 'yes'), tmp > 50)
 identical(r1,r3)
 #[1] TRUE
Run Code Online (Sandbox Code Playgroud)

要么

 library(car)
 r4 <- recode(tmp>50, "FALSE='no'; TRUE='yes'")
 identical(r1,r4)
 #[1] TRUE
Run Code Online (Sandbox Code Playgroud)