하나의 명령 (이 경우 apply
함수) 의 출력을 억제하려고합니다 .
사용하지 않고 할 수 sink()
있습니까? 아래에 설명 된 해결책을 찾았지만 가능하면 한 줄로이 작업을 수행하고 싶습니다.
답변
를 사용하지 않고이 작업을 수행하려는 이유는 분명하지 sink
않지만 invisible()
함수 에서 모든 명령을 래핑 할 수 있으며 출력을 억제합니다. 예를 들면 :
1:10 # prints output
invisible(1:10) # hides it
그렇지 않으면 항상 세미콜론과 괄호를 사용하여 항목을 한 줄로 결합 할 수 있습니다.
{ sink("/dev/null"); ....; sink(); }
답변
capture.output()
기능을 사용하십시오 . 일회성처럼 작동하며 sink()
와 달리 invisible()
인쇄 메시지 이상을 억제 할 수 있습니다. /dev/null
UNIX 또는 NUL
Windows 에서 파일 인수를로 설정하십시오 . 예를 들어 Dirk의 메모를 고려하면 다음과 같습니다.
> invisible(cat("Hi\n"))
Hi
> capture.output( cat("Hi\n"), file='NUL')
>
답변
아래와 같이 ‘capture.output’을 사용할 수 있습니다. 이렇게하면 나중에 데이터를 사용할 수 있습니다.
log <- capture.output({
test <- CensReg.SMN(cc=cc,x=x,y=y, nu=NULL, type="Normal")
})
test$betas
답변
R은 할당되지 않은 표현식의 출력 만 자동으로 인쇄하므로의 결과를 apply
변수에 할당 하면 인쇄되지 않습니다.
답변
다음 함수는 원하는 것을 정확하게 수행해야합니다.
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”로 바꿔야합니다.
답변
RMarkdown에 적용 할 수있는 솔루션을 찾고있는 사람이 여기에 도착하면 모든 출력이 표시되지 않습니다.
```{r error=FALSE, warning=FALSE, message=FALSE}
invisible({capture.output({
# Your code goes here
2 * 2
# etc
# etc
})})
```
코드는 실행되지만 출력은 HTML 문서에 인쇄 되지 않습니다.
답변
답변에 대한 해들리의 코멘트 만들기 (더 잘 보이게하기를 바랍니다). plyr
패키지 사용으로 인쇄없이 적용 패밀리 사용 가능
x <- 1:2
lapply(x, function(x) x + 1)
#> [[1]]
#> [1] 2
#>
#> [[2]]
#> [1] 3
plyr::l_ply(x, function(x) x + 1)
2020-05-19에 reprex 패키지 (v0.3.0)에 의해 생성됨