Some of internally used C routines are now exported. This interface should be considered experimental. List of exported C routines and their signatures are provided below in the usage section.
# SEXP subsetDT(SEXP x, SEXP rows, SEXP cols); # p_dtCsubsetDT = R_GetCCallable("data.table", "CsubsetDT");
For details how to use those see Writing R Extensions manual Linking to native routines in other packages section.
Be aware C routines are likely to have less input validation than their corresponding R interface. For example one should not expect
DT[-5L] will be equal to
.Call(CsubsetDT, DT, -5L, seq_along(DT)) because translation of
seq_len(nrow(DT))[-5L] might be happening on R level. Moreover checks that
i argument is in range of
1:nrow(DT), missingness, etc. might be happening on R level too.