Печать отметки времени из пасты - PullRequest
1 голос
/ 05 марта 2020

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

tp = function(...) {
  ts = format(Sys.time(), "%d.%m.%Y %H:%M:%OS")
  m = paste('[',ts,']',str(...))
  print(m)
}

При вызове помощника tp для печати столбцов data.frame:

 tp(names(df))

Предполагаемый результат такой:

[ 04.03.2020 19:35:00.345 ]  country state day dt confirmed recovered deaths

Но фактический вывод:

 chr [1:7] "country" "state" "day" "dt" "confirmed" "recovered" "deaths"
[1] "[ 04.03.2020 19:35:00.345 ] "

Обратите внимание, что я добавил

 str(...)

, потому что в противном случае вывод будет одна строка на элемент столбца . Вместо этого вывод должен сохранять печать в одну строку: может быть, путем объединения элементов коллекции каким-либо образом? Я мог бы использовать некоторую помощь для очистки этого.

Ответы [ 2 ]

3 голосов
/ 05 марта 2020

Вам необходимо объединить аргументы многоточия в одну строку.

tp = function(...) {
  ts = format(Sys.time(), "%d.%m.%Y %H:%M:%OS")
  m = paste('[', ts, ']', paste(..., collapse = " "))
  print(m)
}

df <- data.frame("country" = NA,
                 "state" = NA,
                 "day" = NA)

tp(names(df))
#> [1] "[ 05.03.2020 08:10:58 ] country state day"
2 голосов
/ 05 марта 2020

Вы, вероятно, на самом деле хотите cat, а не print.

Тогда вы можете определить:

tp = function(...) {
  cat(format(Sys.time(), "[ %d.%m.%Y %H:%M:%OS ]"), ...)
  return(invisible())
}

tp(names(df))
# [ 05.03.2020 12:03:13.015595 ] country state day

Обратите внимание на отсутствие [1] "..."

FWIW R имеет встроенный date(), который имеет другой формат, но более лаконичен:

cat(date())
# Thu Mar  5 04:04:37 2020

Или, если вам не нужна точность ниже секунды и все в порядке с форматированием ISO, format = '[ %F %T ]' также более лаконичен .

Вы также можете использовать %z и / или аргумент tz для format.POSIXct, чтобы также передать системный часовой пояс в вашем журнале.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...