I assumed that the old matrix iota idiom
{(↓⍺)⍳↓⍵}
only "worked" (was optimized for) simple character matrices.
Does it do anything special for general, possibly nested matrices? I don't think you get any advantage here.
In the code above, I assume the arguments are matrices where each column is of the same type, and there are possibly character columns as well?
Wouldn't you be better off converting all columns to text, laminating, and then using the idiom? Or better yet, using v14, allowing Roger Hui to do it for you with 8 i-beam?
The only thing you would need to do is pre-process the floats somehow.