Я новичок в пакете data.table. Я работаю над большой таблицей данных (60 столбцов, 9 миллионов строк) и хотел бы заменить все отрицательные значения на 0 во всех столбцах.Data.Table: условно обновлять значения в .SD по ссылке
Мое текущее решение:
dt2 <- dt[, lapply(.SD,function(x) {ifelse(x < 0,0,x)})]
Это занимает ок. 8 с на столбец. Я хотел бы использовать оператор: = и пропустить функцию, чтобы сделать ее быстрее. Но я не знаю, как я могу ссылаться на текущую колонку, выбранную .SD
например.
dt[, lapply(.SD, .SD[<0] := 0]
Как мне это сделать?
Спасибо akrun! Второй вариант уже в 4 раза быстрее. Честно говоря, «установочный путь» все еще выше моих текущих знаний. Не могли бы вы объяснить, что там происходит, поэтому я могу интегрировать его в свой код и проверить его? –
@MarioKreutzfeldt Я обновил сообщение с некоторым описанием. Надеюсь, поможет – akrun