Я хочу проверить свое понимание поведения data.table, потому что я пытаюсь угадать, как R будет вести себя при использовании функций на RHS оператора :=
.
Любой нюанс в моих наблюдениях приветствуется (а также комментарии о том, как это соотносится с data.table и data.frame).
В основном я хочу выяснить, как узнать, когда:=
, используемый с функциями, будет принимать ссылки на столбец в data.table (в RHS) как вектор каждого значения в столбце вместо простого применения функции по строке к каждому значению.
library(data.table)
dt <- data.table(x = c(-100,-50,0,50,100))
dt[,y := max(0,x)]
dt[,z := abs(x)]
dt[,sd := sd(x)]
Здесь min
, кажется, превращает 0 и вектор всех значений x в один вектор, затем запускается на этом новом векторе.Более того, кажется, что в столбце x принимается каждое значение, а не только значение x в данной строке.
С другой стороны, abs
возвращает только абсолютное значение x для этогострока.
А затем sd
принимает в качестве аргумента весь столбец x (вместо применения по строке).
Нужно ли просто копаться в документации для функции, чтобы увидеть,он принимает атомарный аргумент против векторного аргумента и предполагает, что если функция принимает вектор, она будет применяться ко всему столбцу (и не будет применяться к каждой строке)?Это лучший способ, которым я могу это сделать?