Ist es möglich, neue Variablennamen im laufenden Betrieb zu erstellen?
Ich möchte Datenrahmen aus einer Liste in neue Variablen mit Zahlen am Ende lesen. So etwas wie orca1, orca2, orca3 ...
Wenn ich so etwas versuche
paste("orca",i,sep="")=list_name[[i]]
Ich bekomme diesen Fehler
target of assignment expands to non-language object
Gibt es einen anderen Weg, um das zu umgehen?
Antworten:
Verwendung
assign
:quelle
paste0
?Es scheint mir , dass Sie besser dran mit einer Liste sein könnten anstatt
orca1
,orca2
etc, ... dann wäre esorca[1]
,orca[2]
...Normalerweise erstellen Sie eine Liste von Variablen, die sich nur durch eine Zahl unterscheiden, da diese Zahl eine bequeme Möglichkeit ist, später darauf zuzugreifen.
Ansonsten
assign
ist genau das, was Sie wollen.quelle
Machen Sie keine Datenrahmen. Behalten Sie die Liste bei, benennen Sie ihre Elemente, aber hängen Sie sie nicht an.
Der Hauptgrund dafür ist, dass Sie, wenn Sie unterwegs Variablen erstellen, fast immer später jede einzelne durchlaufen müssen, um etwas Nützliches auszuführen. Dort werden Sie erneut gezwungen sein, jeden der Namen, die Sie im laufenden Betrieb erstellt haben, zu durchlaufen.
Es ist viel einfacher, die Elemente der Liste zu benennen und die Namen zu durchlaufen.
Was das Anhängen betrifft, ist es eine wirklich schlechte Programmierpraxis in R und kann zu großen Problemen führen, wenn Sie nicht vorsichtig sind.
quelle
FAQ sagt:
Wenn Sie haben
du kannst tun
zum
oder
zum
Es sieht also so aus, als würden Sie GET verwenden, wenn Sie eine Formel auswerten möchten, die eine Variable verwendet (z. B. eine Verkettung), und ASSIGN, wenn Sie einer vordeklarierten Variablen einen Wert zuweisen möchten.
Syntax für zuweisen: zuweisen (x, Wert)
x: Ein Variablenname, der als Zeichenfolge angegeben wird. Es wird kein Zwang ausgeübt, und das erste Element eines Zeichenvektors mit einer Länge von mehr als eins wird mit einer Warnung verwendet.
Wert: Wert, der x zugewiesen werden soll.
quelle
Eine andere schwierige Lösung besteht darin, Elemente der Liste zu benennen und
attach
Folgendes:quelle
attach
Sie normalerweise die falsche Frage ...Und diese Option?
Es funktioniert perfekt. In dem von Ihnen angegebenen Beispiel fehlt die erste Zeile und Sie erhalten die Fehlermeldung.
quelle