РЕДАКТИРОВАТЬ: обновлено, чтобы избежать использования опрометчивых sapply
.
Поскольку фрейм данных является списком, мы можем использовать функции применения списка:
nums <- unlist(lapply(x, is.numeric))
Тогда стандартное подмножество
x[ , nums]
## don't use sapply, even though it's less code
## nums <- sapply(x, is.numeric)
Для более идиоматического современного R я бы сейчас порекомендовал
x[ , purrr::map_lgl(x, is.numeric)]
Меньше кодов, меньше отражающих специфические особенности R, а также более простой и надежный для использования с фоновыми базами данных:
dplyr::select_if(x, is.numeric)