2016-07-20 33 views
0

Meine Frage ist ähnlich wie How to add variable key/value pair to list object?. Ich möchte einem Listenelement einen veränderbaren Namen entsprechend dem Wert einer Variablen geben. Aber ich möchte nicht umbenennen die Liste, aber nennen Sie es richtig direkt bei der Initialisierung (Ich möchte eine ein Liner) ohne Verwendung von "The evil trio (eval, parse, paste)".veränderbare Benennungslistenelemente bei der Initialisierung ohne eval (parse (paste()))

Das „Problem“, wie list Arbeiten ist, dass

key <- "width" 
my_list <- list(key = 32) 

Namen des Element (verständlicherweise) "key" und nicht "width", auch wenn key <- "width" und man ist bestrebt, das gleiche Ergebnis wie my_list <- list(width = 32) zu haben. Die "böse Trio-Lösung" wäre my_list <- eval(parse(text = paste("list(", key, "=32)"))), aber ich suche eine elegantere Lösung wie list(eval(key) = 32) (was nicht funktioniert).

+0

Ich habe meine Antwort gelöscht, da sie bereits in der Frage verlinkt ist (http://StackOverflow.com/a/31298923/3521006). IMO, es ist die beste Option –

+0

@docendodiscimus Im Allgemeinen stimme ich Ihnen zu, aber leider hat diese nette Antwort (mit meinem upvote) nur 3 Stimmen und ist nicht direkt zu erkennen, als eine geeignete Antwort (wie Assad Ebrahim spricht über ein "Hash "und sein Code verwendet nicht den Code aus dem OP." Also zögern Sie nicht, Ihre Antwort erneut zu posten (ich werde dann natürlich meine eigene Antwort löschen). – Qaswed

Antwort

1

Benutzer docendo discimus gab die Antwort setNames(list(32), key) aber "gelöscht [seine] Antwort, da es bereits given in the Q&A in der Frage verknüpft ist."

Leider hat diese nette Antwort dort (mit meinem upvote) nur 3 Stimmen und ist nicht direkt als eine passende Antwort zu erkennen (wie Assad Ebrahim spricht über einen "Hash" und sein Code verwendet nicht den Code aus der OP).