Как вы упомянули "большой список", я предоставляю второй вариант, в котором вместо этого используется replace
, который немного быстрее по сравнению с ifelse
.
Благодаря @TimBiegeleisen для данных
lst <- list(v1=-10000, v2=500, v3=c(1,2))
lapply(lst, function(x) replace(x, x == -10000, NA))
#$v1
#[1] NA
#
#$v2
#[1] 500
#
#$v3
#[1] 1 2
тест
l <- rep(lst, 100000)
library(microbenchmark)
benchmark <- microbenchmark(
tim = lapply(l, function(x) ifelse(x==-10000, NA, x)),
markus = lapply(l, function(x) replace(x, x==-10000, NA))
)
autoplot(benchmark)
![enter image description here](https://i.stack.imgur.com/lrmZ5.png)
benchmark
#Unit: milliseconds
# expr min lq mean median uq max neval cld
# tim 931.5551 1003.0364 1054.7647 1018.7956 1082.3210 2536.373 100 b
# markus 432.3821 473.9881 500.4833 482.5838 515.9907 1023.392 100 a