studio - plot en r
Suprimir la salida de un comando en R (6)
La siguiente función debe hacer exactamente lo que quiere:
hush=function(code){
sink("NUL") # use /dev/null in UNIX
tmp = code
sink()
return(tmp)
}
Por ejemplo con la función aquí:
foo=function(){
print("BAR!")
return(42)
}
corriendo
x = hush(foo())
Asignará 42 a x pero no imprimirá "BAR!" para repartir
Tenga en cuenta que en un sistema operativo UNIX deberá reemplazar "NUL" por "/ dev / null"
Estoy buscando suprimir la salida de un comando (en este caso, la función de apply
).
¿Es posible hacer esto sin usar sink()
? He encontrado la solución descrita a continuación, pero me gustaría hacer esto en una línea si es posible.
No está claro por qué desea hacer esto sin el sink
, pero puede ajustar cualquier comando en la función invisible()
y suprimirá la salida. Por ejemplo:
1:10 # prints output
invisible(1:10) # hides it
De lo contrario, siempre puedes combinar las cosas en una línea con un punto y coma y paréntesis:
{ sink("/dev/null"); ....; sink(); }
Puedes usar ''capture.output'' como abajo. Esto le permite utilizar los datos más tarde:
log <- capture.output({
test <- CensReg.SMN(cc=cc,x=x,y=y, nu=NULL, type="Normal")
})
test$betas
R solo imprime automáticamente la salida de las expresiones no asignadas, así que simplemente asigne el resultado de la apply
a una variable y no se imprimirá.
Utilice la función capture.output()
. Funciona de manera muy parecida a un sink()
único sink()
y, a diferencia de invisible()
, puede suprimir más que solo imprimir mensajes. Establezca el argumento del archivo en /dev/null
en UNIX o NUL
en Windows. Por ejemplo, considerando la nota de Dirk:
> invisible(cat("Hi/n"))
Hi
> capture.output( cat("Hi/n"), file=''NUL'')
>
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))
produce una salida sin NULL al final de la línea o en la siguiente línea
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