Anwenden einer Funktion auf jede Zeile einer Datentabelle

Ich suche nach einer Möglichkeit, eine Funktion effizient auf jede Zeile der data.table anzuwenden. Betrachten wir die folgende Datentabelle:

library(data.table)
library(stringr)

x <- data.table(a = c(1:3, 1), b = c('12 13', '14 15', '16 17', '18 19'))
> x
   a     b
1: 1 12 13
2: 2 14 15
3: 3 16 17
4: 1 18 19

Angenommen, ich möchte jedes Element der Spalte aufteilenb durch Leerzeichen (so ergeben sich zwei Zeilen für jede Zeile in den Originaldaten) und verknüpfen Sie die resultierenden Datentabellen. Für das obige Beispiel benötige ich folgendes Ergebnis:

   a V1
1: 1 12
2: 1 13
3: 2 14
4: 2 15
5: 3 16
6: 3 17
7: 1 18
8: 1 19

Folgendes würde funktionierenwenn Spaltea hat nur eindeutige Werte:

x[, list(str_split(b, ' ')[[1]]), by = a]

Folgendefast funktioniert (es sei denn, die ursprüngliche Datentabelle enthält identische Zeilen), ist aber hässlich, wennx hat viele spalten und kopiert spalte b zum ergebnis, was ich vermeiden möchte.

>     x[, list(str_split(b, ' ')[[1]]), by = list(a,b)]
   a     b V1
1: 1 12 13 12
2: 1 12 13 13
3: 2 14 15 14
4: 2 14 15 15
5: 3 16 17 16
6: 3 16 17 17
7: 1 18 19 18
8: 1 18 19 19

Was wäre der effizienteste und idiomatischste Weg, um dieses Problem zu lösen?

Antworten auf die Frage(7)

Ihre Antwort auf die Frage