2013-09-05 2 views
1

I가 다음과 같은 R 스크립트 :변경 TRUE 및 예에 FALSE 및 없음

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을 "TRUE"대신 "Yes"로 표시하고 "FALSE"대신 "No"로 정의하십시오.

물론 z <- ifelse(x == y, "Yes", "No")도 할 수 있지만 여전히 정의 할 수있는 options() 함수 안에있는 매개 변수와 같은 것을 찾고 있습니다. 스크립트의 끝까지 (또는 매개 변수를 다시 정의 할 때까지) 작동합니다.). ?options에서 이와 유사한 항목을 찾을 수 없습니다.

+1

이 질문을 해결하지 않지만, 당신이 필요하지 않습니다 '=='변수는 이미''logical'' 타입이기 때문에. –

+0

질문에 대한 답은'ifelse (FALSE, 'Yes', 'No')' – Dason

+0

입니다. 간단히 말해서'z = ifelse (z, 'Yes', 'No' @ SeñorO, 입력 주셔서 감사합니다, 트릭에 대해 잊어 버렸습니다. 코드 바이트를 절약하는 것이 좋습니다. –

답변

9

내가 아는 한, R은 논리 개체 (즉, 좋다고 생각한다)에 TRUEFALSE을 인쇄한다는 사실을 덮어 쓸 방법이 없습니다.

당신이 요인 변환 될 수 찾고있는 가장 가까운 솔루션 :

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

> z 
[1] No Yes Yes Yes Yes No Yes 
Levels: No Yes 
+0

기본 TRUE/FALSE는 각 개체가 속한 클래스를 빨리 이해하는 데 편리하지만 표 형식으로 데이터를 표시해야하는 경우 이상하게 보입니다. 특히 보고서가 영어로 작성되지 않았기 때문에. –

+1

그러면 로컬에서 변경 한 내용을 로컬에서 변경하는 것보다 훨씬 나은 대안으로 보입니다. – Dason

+0

'x [z]'는'logical' 타입에서는 작동하지만'factor'에서는 작동하지 않습니다. –

7

또 다른 방법 :

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

또는'z <- c ('아니요', '예') [1 + c (x == y)]'박쥐 오른쪽. –