extrahiert werden kann Ich habe eine Datentabelle in R mit Textspalten von Doppelpunkt getrennten Daten. Ich möchte eine Matrix/Datentabelle der Ergebnisse zurückgeben, wo einer der begrenzten Werte für jede Zelle zurückgegeben wird.Wie effizient abgegrenzte Zeichenfolgen aus einer Datentabelle in R
Der unten eingefügte Code zeigt das Problem und ist eine funktionierende Lösung. Meine tatsächliche Datentabelle ist jedoch groß (einige tausend Zeilen und Spalten), und die eingefügte Methode dauert in der Größenordnung von ein oder zwei Minuten.
Ich frage mich, ob es eine effizientere Möglichkeit zur Durchführung dieser Aufgabe gibt? Es scheint, dass die sep2
Option in fread
sehr nützlich für dieses Problem sein wird, sobald es implementiert ist.
Danke!
> # Set up data.table
> DT <- data.table(A = c("cat:1:meow", "dog:2:bark", "cow:3:moo"),
B = c("dog:3:meow", "dog:4:bark", "frog:3:croak"),
C = c("dingo:0:moo", "cat:8:croak", "frog:1:moo"))
> print(DT)
A B C
1: cat:1:meow dog:3:meow dingo:0:moo
2: dog:2:bark dog:4:bark cat:8:croak
3: cow:3:moo frog:3:croak frog:1:moo
# grab the second delimited value in each cell
> part_index <- 2
> f = function(x) {vapply(t(x), function(x) {unlist(strsplit(x, ":", fixed=T))[part_index]}, character(1))}
> sapply(DT, f)
A B C
[1,] "1" "3" "0"
[2,] "2" "4" "8"
[3,] "3" "3" "1"