하나의 명령 (이 경우 apply
함수) 의 출력을 억제하려고합니다 .
사용하지 않고 할 수 sink()
있습니까? 아래에 설명 된 해결책을 찾았지만 가능하면 한 줄로이 작업을 수행하고 싶습니다.
하나의 명령 (이 경우 apply
함수) 의 출력을 억제하려고합니다 .
사용하지 않고 할 수 sink()
있습니까? 아래에 설명 된 해결책을 찾았지만 가능하면 한 줄로이 작업을 수행하고 싶습니다.
capture.output
. 또는 *_ply
플라이어 패키지에서 사용 하십시오.
lapply
. 출력을 인쇄하지 않고 , 같은 적용 기능을 실제로 실행하려는 경우 그의 plyr
패키지 에서 'l_ply' 가 가장 적절한 선택 일 것입니다.
답변:
를 사용하지 않고이 작업을 수행하려는 이유는 분명하지 sink
않지만 invisible()
함수 에서 모든 명령을 래핑 할 수 있으며 출력을 억제합니다. 예를 들면 :
1:10 # prints output
invisible(1:10) # hides it
그렇지 않으면 항상 세미콜론과 괄호를 사용하여 항목을 한 줄로 결합 할 수 있습니다.
{ sink("/dev/null"); ....; sink(); }
invisible()
가 아닌 표현식의 인쇄 만 억제합니다 sink()
.
apply
질문에 따라의 반환을 억제합니다 : invisible(apply(matrix(1:10), 1, as.numeric))
.
{ sink("/dev/null"); ....; sink(); }
내가 확실히 선호하는 것 보다 capture.output
, capture.output
효과적으로 위에서 정확히했던 것처럼 훨씬 낫다 (소스를 살펴보면 위의 패션에서 싱크라고 부르고 그 주변에 좋은 것들을 더한다).
idw
Windows 에서 작동하지 않습니다 . 나는 최고의 솔루션을 사용하고있는 것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(x <- log(2))
그리고 이후 x
의 값을 가지고 log(2)
...
R은 할당되지 않은 표현식의 출력 만 자동으로 인쇄하므로의 결과를 apply
변수에 할당 하면 인쇄되지 않습니다.
print()
또는 cat()
그들에 그되지 과제로, 화면으로 이동합니다.
다음 함수는 원하는 것을 정확하게 수행해야합니다.
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"로 바꿔야합니다.
답변에 대한 해들리의 코멘트 만들기 (더 잘 보이게하기를 바랍니다). 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)에 의해 생성됨
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