Подтвердить что ты не робот

Отображение времени в командной строке R

Интересно, есть ли способ показать текущее время в командной строке R, например, в MS DOS, мы можем использовать

Prompt $T $P$G

чтобы включить часы времени в каждую строку подсказки. Что-то вроде

options(prompt=paste(format(Sys.time(), "%H:%M:%S"),"> "))

сделает это, но затем он будет зафиксирован в момент его установки. Я не уверен, как сделать это обновление автоматически.

4b9b3361

Ответ 1

Чейз указывает правильный путь, поскольку для этого может использоваться options("prompt"=...). Но его решения добавляют постоянное выражение времени, которое не то, что мы хотим.

Документация для функции taskCallbackManager имеет остальное:

R> h <- taskCallbackManager()
R> h$add(function(expr, value, ok, visible) { 
+     options("prompt"=format(Sys.time(), "%H:%M:%S> ")); 
+             return(TRUE) }, 
+     name = "simpleHandler")
[1] "simpleHandler"
07:25:42> a <- 2
07:25:48>

Мы регистрируем обратный вызов, который оценивается после завершения каждой команды. Это делает трюк. Более причудливая документация в этом документе с сайта разработчика R.

Ответ 2

Вот альтернативное решение обратного вызова:

updatePrompt <- function(...) {options(prompt=paste(Sys.time(),"> ")); return(TRUE)}
addTaskCallback(updatePrompt)

Это работает так же, как метод Dirk, но синтаксис для меня немного проще.

Ответ 3

Ни один из других методов, основанных на обратных вызовах, не обновит запрос, если не будет выполнена команда верхнего уровня. Таким образом, нажатие возврата в консоли не приведет к изменению. Такова природа обработки обратного вызова R.

Если вы устанавливаете пакет tcltk2, вы можете настроить планировщик задач, который изменяет option() следующим образом:

library(tcltk2)
tclTaskSchedule(1000, {options(prompt=paste(Sys.time(),"> "))}, id = "ticktock", redo = TRUE)

Voila, что-то вроде подсказки MS DOS.

NB: Вдохновение пришло из этого ответа.


Примечание 1: Время ожидания (в этом случае 1000) относится к числу миллисекунд, а не секундам. Вы можете настроить его вниз, когда подсезонное разрешение будет каким-то полезным.

Ответ 4

Вы можете изменить символ по умолчанию, отображаемый с помощью команды options(). Вы можете попробовать что-то вроде этого:

options(prompt = paste(Sys.time(), ">"))

Просмотрите страницу справки для ?options для получения полного списка вещей, которые вы можете установить. Это очень полезно знать!

Предполагая, что это то, что вы хотите сделать для каждого сеанса R, подумайте о том, чтобы переместить его на .Rprofile. Несколько других хороших самородков счастья программирования можно найти hither по этой теме.

Ответ 5

Я не знаю, как это сделать, но я знаю, что R имеет интерфейсы с другими языками, которые имеют команды системного времени. Может быть, это вариант?

Тьерри упомянул system.time(), а также proc.time() в зависимости от того, для чего вам это нужно, хотя ни одно из них не дает вам текущего времени.