номер? не работает таким образом. Проверяет тип. Если вы передадите ему персонажа, вы будете каждый раз возвращать ложное значение, независимо от того, что это за персонаж.
Я бы, вероятно, использовал для этого регулярное выражение, но если вы хотите сохранить ту же идею программы, вы можете сделать что-то вроде
(apply str (filter #(#{\0,\1,\2,\3,\4,\5,\6,\7,\8,\9} %) "abc123def"))
или даже лучше
(apply str (filter #(Character/isDigit %) myString))