Skip to content
Prev 62110 / 63424 Next

eval(parse()) within mutate() returning same value for all rows

On 29 December 2023 at 22:31, Mateo Obreg?n wrote:
| Thanks Gabor, I like your solution that splits the args into separate columns, 
| in turn making the sprintf() call more interpretable .

Well you may also like `tstrsplit()`, a gem inside data.table:
words   args
                 <char> <char>
1: %s plus %s equals %s  1,1,2
2: %s plus %s equals %s  2,2,4
3: %s plus %s equals %s  3,3,6
words   args      a      b      c
                 <char> <char> <char> <char> <char>
1: %s plus %s equals %s  1,1,2      1      1      2
2: %s plus %s equals %s  2,2,4      2      2      4
3: %s plus %s equals %s  3,3,6      3      3      6
words   args      a      b      c               res
                 <char> <char> <char> <char> <char>            <char>
1: %s plus %s equals %s  1,1,2      1      1      2 1 plus 1 equals 2
2: %s plus %s equals %s  2,2,4      2      2      4 2 plus 2 equals 4
3: %s plus %s equals %s  3,3,6      3      3      6 3 plus 3 equals 6
so all we do here is a one-liner in data.table if you're so inclined:
res
              <char>
1: 1 plus 1 equals 2
2: 2 plus 2 equals 4
3: 3 plus 3 equals 6
data.table is very powerful and expressive. It is much worth getting into
which I really only did ten or so years into using R.

Dirk