Hi Wildan,
Saya kurang paham sebenarnya apa yang salah dengan script kamu karena begitu saya jalankan baik2 saja.
Mengenai var upper limit dan lower limit seharusnya bukan untuk menghilangkan null, melainkan pada script sebelumnya yaitu:
# membersihkan data null
for(i in colNamesNumeric){
dataTrain[, i] = ifelse(is.na(dataTrain[, i]), 0, dataTrain[, i])
}
Jika masih ada null maka kemungkinan kamu lupa execute script ini.
kemudian int dan numeric sama2 untuk data numerik sehingga tidak masalah jika upper limit list dan lower limit list memiliki tipe int.
Nah kemudian untuk hasil performance model mungkin bisa slightly different akibat beda versi R.
Regards