Функциональный вызов для j
в x[i, j, ...]
при назначении x
:
`:=`(col1_name = col1, col2_name = col2)
# or
c("col1_name", "col2_name") := list(col1, col2)
Второй способ существует для удобства пользователя (поэтому вам не нужно возиться с обратными галочками вокруг :=
). Еще одно удобство предлагается, когда есть один столбец:
`:=`(col1_name = col1)
# or
col1_name := list(col1)
# or
col1_name := col1
Здесь последний вариант избавляет вас от необходимости заключать в list(...)
. Такая же удобная функция появляется, когда присутствует by=
. В обоих случаях ожидается, что j
будет вычислять список столбцов, поэтому пустой вектор также рассматривается как список столбцов длины один. Если вы хотите избежать расплаты с этим несоответствием, вы всегда можете написать list(...)
или всегда использовать `:=`(...)
в j
.
В вашем примере это может означать изменение функции для возврата одного столбца вместо переноса в list(...)
. Для некоторых других идей и ссылок на виньетки, включенные в пакет, возможно см. Добавление столбцов списка к таблицам данных в R возвращает несовместимый вывод - функция или ошибка?
В качестве альтернативы, вы могли бы применить tag
Править более эффективно с чем-то вроде «неравного соединения»:
mDT = data.table(
yr_up = c(2010, 2010, Inf, Inf),
sal_up = c(25000, Inf, 100000, Inf),
value = c("okay", "cool", "okay", "cool")
)
dt[, cmt := mDT[.SD, on=.(yr_up > yr, sal_up > sal), mult="first"]$value]
Если Вы соглашаетесь с выполнением его в клиенте, Время:: модуль ParseDate должен смочь сделать работу для Вас.
Модули DateTime служили мне хорошо, когда я должен обработать вычисления даты/времени.
Используйте DBD:: Sybase syb_date_fmt()
метод для управления форматом затем используйте DateTime:: Формат:: Strptime, чтобы проанализировать Ваши результаты и генерировать объекты DateTime. Используйте DateTime epoch
метод, чтобы получить Ваше время эпохи или еще лучше сделать Вашу математику с помощью соответствующего DateTime:: объекты Продолжительности.
Если Вы не можете заставить Sybase и Perl сотрудничать, чтобы дать Вам, подлинный DateTime возражает или что-то подобное (как Время:: Часть), затем способ, которым я обычно обрабатываю такие вещи, состоит в том, чтобы попытаться убедить базу данных давать мне формат даты стандарта ISO (YYYY-MM-DDTHH:MI:SS) и преобразовывать оттуда.