함수의 출력 억제
하나의 명령 출력을 억제하려고 합니다(이 경우에는apply
함수)를 선택합니다.
를 사용하지 않고 이 작업을 수행할 수 있습니까?sink()
아래 설명된 해결책을 찾았지만 가능하다면 한 줄로 하고 싶습니다.
당신이 왜 이것을 하지 않고 하고 싶은지는 명확하지 않습니다.sink
그러나 다음에서 모든 명령을 래핑할 수 있습니다.invisible()
출력을 억제합니다.예를 들어:
1:10 # prints output
invisible(1:10) # hides it
그렇지 않으면 세미콜론과 괄호를 사용하여 항상 한 줄로 항목을 결합할 수 있습니다.
{ sink("/dev/null"); ....; sink(); }
사용capture.output()
기능.일회용처럼 작동합니다.sink()
와는invisible()
메시지를 출력하는 것 이상의 것을 억제할 수 있습니다.file 인수를 다음으로 설정합니다./dev/null
UNIX 또는NUL
창문에예를 들어 Dirk의 노트를 고려하면 다음과 같습니다.
> invisible(cat("Hi\n"))
Hi
> capture.output( cat("Hi\n"), file='NUL')
>
다음 기능은 사용자가 원하는 것을 정확히 수행해야 합니다.
hush=function(code){
sink("NUL") # use /dev/null in UNIX
tmp = code
sink()
return(tmp)
}
예를 들어 다음과 같은 기능이 있습니다.
foo=function(){
print("BAR!")
return(42)
}
입니다.
x = hush(foo())
42를 x에 할당하지만 STDOUT에 "BAR!"을 인쇄하지 않습니다.
UNIX OS에서는 "NUL"을 "/dev/null"로 대체해야 합니다.
R은 지정되지 않은 식의 출력만 자동으로 인쇄하므로 다음과 같은 결과만 할당합니다.apply
변수에 연결하면 인쇄되지 않습니다.
아래와 같이 'dll.output'을 사용할 수 있습니다.이를 통해 나중에 데이터를 사용할 수 있습니다.
log <- capture.output({
test <- CensReg.SMN(cc=cc,x=x,y=y, nu=NULL, type="Normal")
})
test$betas
R Markdown에 적용할 수 있는 솔루션을 찾고 있는 사람이 있을 경우, 이는 모든 출력을 억제합니다.
```{r error=FALSE, warning=FALSE, message=FALSE}
invisible({capture.output({
# Your code goes here
2 * 2
# etc
# etc
})})
```
코드는 실행되지만 출력은 HTML 문서로 인쇄되지 않습니다.
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
다음은 shash할 코드의 오류에 강한 버전입니다.
quietly <- function(x) {
sink("/dev/null") # on Windows (?) instead use `sink("NUL")`
tryCatch(suppressMessages(x), finally = sink())
}
- 이것은 수락된 답변을 직접 기반으로 합니다. 감사합니다.
- 그러나 조용한 코드에서 오류가 발생할 경우 출력이 음소거 상태로 유지되는 것을 방지합니다.
해들리의 답변에 대한 논평:인쇄하지 않고 적용 제품군을 사용할 수 있는 방법은plyr
꾸러미
x <- 1:2
lapply(x, function(x) x + 1)
#> [[1]]
#> [1] 2
#>
#> [[2]]
#> [1] 3
plyr::l_ply(x, function(x) x + 1)
만약 당신이 어떻게 억제할지 궁금하다면.warning()
사용할 수 있습니다.suppressWarnings()
이와 같이:
suppressWarnings(warning("hi"))
이 두 가지는 여전히 경고를 표시합니다.
invisible(warning("Hi"))
# shows 'Hi'
capture.output(warning("Hi"), file='NUL')
# shows 'Hi'
언급URL : https://stackoverflow.com/questions/2723034/suppress-output-of-a-function
'programing' 카테고리의 다른 글
MySql로 개발된 함수 생성 구문에서 오류가 발생하여 PphMyAdmin SQL 콘솔의 MariaDB에서 작동하지 않음 (0) | 2023.06.21 |
---|---|
스프링 보안, 상태 비저장 REST 서비스 및 CSRF (0) | 2023.06.21 |
__del__ 메서드는 무엇이며 어떻게 부르나요? (0) | 2023.06.21 |
Git에 의해 마스터에서 커밋되지 않은 변경 사항을 새 분기에 넣는 중 (0) | 2023.06.21 |
MySQL INSERT IGNORE에 해당하는 Oracle? (0) | 2023.06.21 |