Entschuldigung für eine Frage, die es wahrscheinlich offensichtlich macht, dass ich normalerweise in Python / Pandas arbeite, aber ich bleibe dabei. Wie wähle ich eine Spalte data.table
mit einer Zeichenfolge aus?
Ich bin sicher, das ist super einfach, aber ich verstehe es nicht. Jede Hilfe wird sehr geschätzt!
Nach ein paar hilfreichen Kommentaren und Tipps, glaube ich, habe ich das Problem etwas eingegrenzt und habe ein reproduzierbares Beispiel. Überlegen Sie:
%Vor% Und wir nehmen an, dass wir die Werte in col2
zu col1
zuweisen wollen. Wie ich unten erfahren habe, wäre die data.table
-Syntax dafür dt[,col1:=col2]
, sauber und einfach. Die Probleme beginnen, wenn eine (oder beide) der Variablen im Argument j
Strings sind. Ich habe folgendes gefunden:
dt[, "col1":=col2]
funktioniert wie erwartet
dt[, "col1":="col2"]
schlägt wie erwartet fehl (versucht, dem Doppelvektor col2
col1
zuzuweisen
dt[, "col1":=get("col2")]
funktioniert wie erwartet
dt[, get("col1")]
gibt col1
wie erwartet zurück
aber: dt[, get("col1"):=col2]
oder eine andere Zuweisung schlägt fehl.
Irgendein Kontext: Der Grund dafür ist, dass ich Strings in einer Schleife konstruiere, um auf eine größere Anzahl von Spalten zuzugreifen, die alle den Namen colname_colnumber
haben, dh ich fahre über colname
und colnumber
bis dahin Zugriffspalte paste0(colname,colnumber)
.
Ich füge hinzu, dass Sie, wenn Sie eine Reihe von Spalten haben möchten, etwas verwenden möchten wie:
%Vor%Wie @Arun unten hinzufügt, sind andere Optionen zum Erhalten mehrerer Spalten:
%Vor%und
%Vor% Als Referenz scheint mget
sehr langsam zu sein; .SDcols
ist am schnellsten, aber wettbewerbsfähig mit with = FALSE
; Ich persönlich finde alles in verschiedenen Situationen nützlich / natürlich.
Hier ist ein einfacher Benchmark:
%Vor%Sie können Zuweisungen ohne get ausführen, aber mit Klammern:
%Vor%anstelle von:
%Vor%Siehe für mehr Erklärung: Auswählen / Zuweisen zu Daten.Tabellenvariablen, deren Namen in einem Zeichenvektor gespeichert sind
Tags und Links string r indexing data.table