ClearAll[f]
f = Floor@# /. Floor -> Identity &;
f@{1.2, 3, {2.3, 5.4}, null, "fff"}
{1, 3, {2, 5}, null, "fff"}
f@{1.2, 3, {2.3, "ff"}, null, "fff", Pi}
{1, 3, {2, "ff"}, null, "fff", 3}
If the function returns unevaluated when a 'non-applicable' input is passed, this approach is more convenient as it does not require detailed knowledge of the function's argument requirements.
ClearAll[h]
h[x_] := 500 /; PrimeQ[x]
h[x_] := 500 /; Divisible[x, 3]
h /@ Range[15] /. h -> Identity
{1, 500, 500, 4, 500, 500, 500, 8, 500, 10, 500, 500, 500, 14, 500}
StringLength /@ {"abcabc", "bcdbc", 234} /. StringLength -> Identity
{6, 5, 234}
f[x_?NumericQ]:=Floor[x]; f[x_]:=x; f /@ list
. OrIf[NumericQ[#], Floor[#], #]& /@ list
$\endgroup$MapAll[f, list]
orf//@ list
$\endgroup$Listable
. $\endgroup$