Update: This is now fixed in the current development version 1.9.5. From NEWS:
names<-.data.table
works as intended on data.table unaware packages with Rv3.1.0+. Closes #476 and #825. Thanks to ezbentley for reporting here on SO and to @narrenfrei.
Similar to @hrbrmstr suggestion, you can do
library(caret)
library(data.table)
DT <- data.table(x = rnorm(10), y = rnorm(10))
cv.ctrl <- trainControl(method = 'repeatedcv', number = 5, repeats = 1)
fit <- train(y ~ x, data = as.data.frame(DT), 'lm', trControl = cv.ctrl)
DT
# x y
# 1: -0.06027817 1.32641243
# 2: 0.28842856 0.60240700
# 3: 1.14196056 0.97159637
# 4: -0.82907332 0.82955574
# 5: 0.73742357 -0.63901239
# 6: 0.12551649 1.33047527
# 7: -1.12110293 -0.03315772
# 8: 0.29933697 -1.52464998
# 9: 1.66046182 0.21068356
# 10: -0.09126467 2.02206078
This way you won't lose the data.table class