Я хочу обновить значения столбца в таблице data.table, привязанные к двум другим столбцам в одной таблице.Обновление значений с использованием lapply в data.table условно для nrow
Этот код здесь работает некорректно, но я хотел обновить значения в своем DT вместо того, чтобы возвращать список DT.
воспроизводимый пример:
library(data.table)
library(gtools)
# Create Data Table
DT <- as.data.table(combinations(3,2,1:3,repeats=TRUE))
DT[, V3 := 9999 ]
DT
> V1 V2 V3
>1: 1 1 9999
>2: 1 2 9999
>3: 1 3 9999
>4: 2 2 9999
>5: 2 3 9999
>6: 3 3 9999
Мой код:
# create function
stationary <- function(i) {DT[i, V3 := if (V1==V2) 0 else V1+V2 ]}
i <- 1:nrow(DT)
DT <- lapply(i, stationary) # This returns a list of identical data tables
В результате я хотел:
DT
> V1 V2 V3
>1: 1 1 0
>2: 1 2 3
>3: 1 3 4
>4: 2 2 0
>5: 2 3 5
>6: 3 3 0
Итерация по всем наблюдениям всегда медленная. Вы могли бы хотя бы использовать 'ifelse'. – Roland
Я изначально рассматривал цикл с 'if else'. Я все еще склоняюсь к лучшему подходу к моей проблеме. Возможно, мне придется опубликовать еще один вопрос. –
Я написал 'ifelse', который является векторизованной функцией, а не' if else'. – Roland