Подавить вывод одной команды в R - PullRequest
75 голосов
/ 27 апреля 2010

Я хочу подавить вывод команды one (в данном случае, функции apply).

Возможно ли это сделать без использования sink()? Я нашел описанное решение ниже, но хотел бы сделать это в одну строку, если это возможно.

Как подавить вывод

Ответы [ 6 ]

82 голосов
/ 27 апреля 2010

Непонятно, почему вы хотите сделать это без sink, но вы можете обернуть любые команды в функции invisible(), и это подавит вывод.Например:

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

В противном случае вы всегда можете объединить вещи в одну строку с точкой с запятой и круглыми скобками:

{ sink("/dev/null"); ....; sink(); }
50 голосов
/ 27 апреля 2010

Используйте функцию capture.output(). Он работает как однократный sink() и, в отличие от invisible(), может подавлять больше, чем просто печатать сообщения. Установите аргумент файла /dev/null в UNIX или NUL в Windows. Например, учитывая примечание Дирка:

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

> capture.output( cat("Hi\n"), file='NUL')
> 
10 голосов
/ 27 апреля 2010

R только автоматически печатает вывод неназначенных выражений, поэтому просто присвойте результат apply переменной, и он не будет напечатан.

5 голосов
/ 16 декабря 2014

вы можете использовать 'capture.output', как показано ниже. Это позволяет использовать данные позже:

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

test$betas
3 голосов
/ 20 апреля 2018

Следующая функция должна делать именно то, что вы хотите:

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 к х, но не будет печатать "БАР!"STDOUT

Обратите внимание, что в ОС UNIX вам необходимо заменить "NUL" на "/ dev / null"

0 голосов
/ 08 февраля 2016
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...