Подавить вывод одной команды в R
Я ищу, чтобы подавить вывод одной команды (в этом случае, apply
функцию).
Можно ли это сделать без использования sink()
? Я нашел описанное решение ниже, но хотел бы сделать это в одной строке, если это возможно.
Как подавить выход
- Для каждой строки возвращаем имя столбца наибольшего значения
- Существует pmin и pmax, каждый из которых принимает na.rm, почему нет psum?
- Как я могу прерывать текущий код в R с помощью команды клавиатуры?
- Изменение имени переменной в цикле for с использованием R
- Lapply для добавления столбцов в каждый Dataframe в списке
- Форматирование больших валютных или долларовых значений в миллионы / миллиарды
- Как вычесть месяцы из даты в R?
- Как опустить значения NA при одновременном вставке нескольких значений столбцов?
- Создать имя переменной с «вставкой» в R?
- Как передать аргументы командной строки, когда source () R-файл
- Возьмите сумму переменной, если комбинация значений в двух других столбцах уникальна
- Градиент из n цветов, начиная от цвета 1 и цвета 2
- Как мне назвать столбец имен строк в r
Непонятно, почему вы хотите сделать это без sink
, но вы можете обернуть любые команды в функцию invisible()
и подавить выход. Например:
1:10 # prints output invisible(1:10) # hides it
В противном случае вы всегда можете комбинировать вещи в одну строку с точкой с запятой и круглыми скобками:
{ sink("/dev/null"); ....; sink(); }
Используйте capture.output()
. Он очень похож на одноразовый sink()
и в отличие от invisible()
, он может подавлять больше, чем просто печатать сообщения. Задайте аргумент файла /dev/null
в UNIX или NUL
в windowsх. Например, учитывая примечание Дирка:
> invisible(cat("Hi\n")) Hi > capture.output( cat("Hi\n"), file='NUL') >
R только автоматически печатает вывод неназначенных выражений, поэтому просто назначьте результат apply
к переменной, и он не будет распечатан.
вы можете использовать ‘capture.output’, как показано ниже. Это позволяет использовать данные позже:
log <- capture.output({ test <- CensReg.SMN(cc=cc,x=x,y=y, nu=NULL, type="Normal") }) test$betas
Следующая функция должна делать то, что вы хотите точно:
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»,
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