Как ваш первоначальный подход, так и текущий ответ создают объект с тем же размером, что и m
(или df
) при создании m<0
(матричный подход быстрее, потому что меньше внутреннего копирования с [<-
по сравнению с [<-.data.frame
Вы можете использовать lapply
и replace
, тогда вы смотрите только на вектор или length (nrow(df))
каждый раз и не копируете так много
df <- as.data.frame(lapply(df, function(x){replace(x, x <0,0)})
Если вы используете data.table
, тогда большая часть неэффективности времени работы data.frame
памяти (и) будет удалена. Это было бы идеально для большой ситуации с данными как ваш.
library(data.table)
# this really shouldn't be
DT <- lapply(df, function(x){replace(x, x <0,0)})
# change to data.table
setattr(DT, 'class', c('data.table','data.frame'))
# or
# DT <- as.data.table(df, function(x){replace(x, x <0,0)})
Вы можете установить ключи во всех столбцах, а затем заменить по ссылке на значения клавиш менее 0
@TestPropertySource(properties = {"ticketing.profile=test"})
Не будет НЕ влиять на системное свойство ticketing.profile
.
Ваш код не должен использовать системное свойство для получения значения, так как это означает, что вы не можете переопределить его.
В коде должен использоваться механизм выбора свойств пружины, который может быть привязан к системным свойствам, если не найден.
Типичный подход - установить свойство по умолчанию в коде (или в тесте, как вы сделали), а затем переопределить его, установив системное свойство.