2014-11-11 2 views
0

true 또는 false를 기준으로 논리 벡터를 "on"또는 "off"로 대체 할 하나의 라이너를 만들려고합니다.R 논리 벡터를 "켜짐"또는 "꺼짐"으로 바꿉니다.

최고는 2 개의 gsub를 사용하고 있습니다.

내가 원하는 것을 달성하기 위해

blah <- tmp > 50 
blah <- gsub(FALSE, "no", blah) 
blah <- gsub(TRUE, "yes", blah) 

을 사용할 수 있습니다 내가 벡터의 tmp를

tmp <- sample(100,100) 

이 가정,하지만 난 더 우아한 해결책 거기에 걸거야.

+0

확실하지 :'ㅋ <- GSUB (FALSE, "아니오", GSUB (TRUE, "예", ㅋ))' –

+0

나는 원 중첩 된 gsubs를 피하십시오. 아래의 ping 응답은 내가 게시했을 때 찾고 있던 것과 정확히 같습니다. akrun의 대답은 사실 알고 있기에 실제로 흥미 롭습니다. – Shuo

답변

10

시도:

당신이 더 우아한을 고려할 것입니다하지만 당신은 전화 둥지 수 GSUB 경우
blah <- ifelse(tmp > 50, "yes", "no") 
7

는를 사용하여

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

또는

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

또는

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

또는

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