your programing

R에서 한 명령의 출력 억제

lovepro 2020. 10. 16. 07:51
반응형

R에서 한 명령의 출력 억제


하나의 명령 (이 경우 apply함수) 의 출력을 억제하려고합니다 .

사용하지 않고 이것을 할 수 sink()있습니까? 아래에 설명 된 솔루션을 찾았지만 가능하면 한 줄로이 작업을 수행하고 싶습니다.

출력을 억제하는 방법


를 사용하지 않고이 작업을 수행하려는 이유는 명확하지 sink않지만 invisible()함수 에서 모든 명령을 래핑 할 수 있으며 출력을 억제합니다. 예를 들면 :

1:10 # prints output
invisible(1:10) # hides it

그렇지 않으면 항상 세미콜론과 괄호를 사용하여 항목을 한 줄로 결합 할 수 있습니다.

{ sink("/dev/null"); ....; sink(); }

capture.output()기능을 사용하십시오 . 일회성처럼 작동하며 sink()와 달리 invisible()인쇄 메시지 이상을 억제 할 수 있습니다. /dev/nullUNIX 또는 NULWindows 에서 파일 인수를로 설정하십시오 . 예를 들어 Dirk의 메모를 고려하면 다음과 같습니다.

> invisible(cat("Hi\n"))
Hi

> capture.output( cat("Hi\n"), file='NUL')
> 

R은 할당되지 않은 표현식의 출력 만 자동으로 인쇄하므로의 결과를 apply변수에 할당 하면 인쇄되지 않습니다.


아래와 같이 'capture.output'을 사용할 수 있습니다. 이렇게하면 나중에 데이터를 사용할 수 있습니다.

log <- capture.output({
  test <- CensReg.SMN(cc=cc,x=x,y=y, nu=NULL, type="Normal")
})

test$betas

다음 함수는 원하는 것을 정확하게 수행해야합니다.

hush=function(code){
  sink("NUL") # use /dev/null in UNIX
  tmp = code
  sink()
  return(tmp)
}

예를 들어 여기에 함수가 있습니다.

foo=function(){
  print("BAR!")
  return(42)
}

달리는

x = hush(foo())

x에 42를 할당하지만 "BAR!"를 인쇄하지 않습니다. STDOUT에

UNIX OS에서는 "NUL"을 "/ dev / null"로 바꿔야합니다.


invisible(cat("Dataset: ", dataset, fill = TRUE))
invisible(cat(" Width: " ,width, fill = TRUE))
invisible(cat(" Bin1:  " ,bin1interval, fill = TRUE))
invisible(cat(" Bin2:  " ,bin2interval, fill = TRUE))
invisible(cat(" Bin3:  " ,bin3interval, fill = TRUE))

줄 끝이나 다음 줄에 NULL없이 출력을 생성합니다.

Dataset:  17 19 26 29 31 32 34 45 47 51 52 59 60 62 63
Width:  15.33333

Bin1:   17 32.33333
Bin2:   32.33333 47.66667
Bin3:   47.66667 63

참고URL : https://stackoverflow.com/questions/2723034/suppress-one-commands-output-in-r

반응형