2017-01-06 3 views
1

R 사용자는 TRUE 대신 T와 F를 사용할 수 있지만 논리 값을 쓰려는 경우 FALSE를 사용할 수 있지만 R 출력은 항상 TRUE와 FALSE의 긴 버전입니다.R. TRUE와 FALSE 대신 T와 F를 사용하는 방법

R이 T와 F를 대신 사용하도록 할 수있는 방법이 있습니까?
개체를 파일에 저장할 때를 포함하여 모든 출력에이 파일을 사용하는 것이 좋습니다.

깔끔하고 화면과 파일 공간이 적습니다.

나는 "T"에 대한 모든 참을 대체 할 수 있지만 "F"에 대한 모든 거짓을 대신 할 수는 있지만 더 이상 논리적으로 인식되지 않기 때문에 좋지 않을 것입니다. 대신 텍스트 일 ​​것입니다.

T와 F는 크레인 패키지에는 허용되지 않지만 다른 이야기입니다.

+4

항상 TRUE와 FALSE를 사용해야합니다. – HubertL

+0

HubertL을 사용해야하는 이유는 무엇입니까? – skan

+0

'T <- FALSE'를 시도한 후'TRUE <- FALSE'를 시도하십시오 - 그 중 하나만 허용됩니다. – thelatemail

답변

2

당신은 TRUEFALSE이 저장되는 방법에 대한 혼란 보인다 :

> x <- sample(c(TRUE, FALSE), 100, replace = TRUE) 

> object.size(x) 
440 bytes 

> y <- sample(c(0L, 1L), 100, replace = TRUE) 

> object.size(y) 
440 bytes 

논리 값이 0L로 저장됩니다 ("논리 제로")와 1L ("논리적 인 하나").

저장 화면에 개체의 "찾기"에서 독립적 인 :

> object.size(0L) 
48 bytes 
> object.size(0) 
48 bytes 
> object.size(F) 
48 bytes 
> object.size(FALSE) 
48 bytes 

... 디스크 공간을 잃고되지 않음을 의미한다.

디스크 공간을 잃을 수있는 유일한 상황은 TRUE/FALSE을 CSV 파일에 텍스트로 저장하는 것입니다. 그 경우에는 0/1으로 저장하십시오.

+0

메모리에있는 객체 크기가 아니라 화면에 인쇄 할 때 및 csv 파일에 저장할 때 문자의 크기를 의미했습니다. TRUE 또는 FALSE와 같은 긴 이름을 사용하는 경우 30 열이라고하는 data.frame이 있으면 올바르게 볼 수 없습니다. – skan

+1

"파일"이 모두 CSV이면 'as.integer'로 '0/1' (으)로 다시 코딩하십시오. 화면보기의 경우 대답은 화면에 개체를 "인쇄"하는 데 사용하는 방법에 따라 다릅니다. –

+0

당신을 다운 받던 사람은 제가 아니 었습니다. 나는 도와 주려고하는 누군가를 결코 downvote하지 않는다. – skan

6

화면에 인쇄의 경우이 작업을 수행 할 수 있습니다 보시다시피

x <- c(TRUE, FALSE) 
class(x) 
#[1] "logical" 

print.logical <- function(x, ...) { 
    print.default(c("F", "T")[x + 1L], quote = FALSE, ...) 
} 

format.logical <- function(x, ...) { 
    format.default(c("F", "T")[x + 1L], ...) 
} 


print(x) 
#[1] T F 
x 
#[1] TRUE FALSE 
format(x) 
#[1] "T" "F" 

DF <- data.frame(a = 1:2, b = c(FALSE, TRUE)) 
DF 
# a b 
#1 1 F 
#2 2 T 

가 아닌 객체에 대한 메소드 파견 (그 주된 이유는 성능이다)하지 않는 암시 인쇄가 우리는 C 코드를 변경하지 않고 R을 다시 컴파일하지 않고도 할 수있는 일이 없습니다. 자신 만의 S3 클래스를 만들 수는 있지만 그렇게 편리하지는 않습니다.

파일 내보내기의 경우 캐릭터 벡터로 변경하는 비슷한 전략을 사용할 수 있지만 실제로 변경해야하며 print 또는 format 메서드를 사용할 수 없습니다. 나는 S3 방법을 통해서가 아니라 명시 적으로 그렇게 할 것입니다.