Подавить один вывод команды в R

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

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

Как отключить вывод

Ответ 1

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

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

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

{ sink("/dev/null"); ....; sink(); }

Ответ 2

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

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

> capture.output( cat("Hi\n"), file='NUL')
> 

Ответ 3

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

Ответ 4

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

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

test$betas

Ответ 5

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