Ich versuche, den Standardwert für einen Funktionsparameter auf eine benannte Zahl festzulegen. Gibt es eine Möglichkeit, eine in einer einzelnen Anweisung zu erstellen? Ich habe? Numerisch und? Vektor überprüft, aber es scheint nicht so. Vielleicht kann ich eine Matrix oder einen data.frame konvertieren / erzwingen und das gleiche Ergebnis in einer Anweisung erzielen? Um es klar zu sagen, ich versuche Folgendes auf einmal zu tun:
test = c( 1 , 2 )
names( test ) = c( "A" , "B" )
function(params= ...) { body }
body
und wienewfunc
man die angeforderte Datenstruktur erhält, hilfreich.Die
setNames()
Funktion ist für diesen Zweck gemacht. Wie in Advanced R beschrieben und?setNames
:test <- setNames(c(1, 2), c("A", "B"))
quelle
... als Randnotiz
structure
können Sie mit der Funktion ALLE Attribute festlegen, nicht nur Namen:structure(1:10, names=letters[1:10], foo="bar", class="myclass")
Welches würde produzieren
a b c d e f g h i j 1 2 3 4 5 6 7 8 9 10 attr(,"foo") [1] "bar" attr(,"class") [1] "myclass"
quelle
Wie wäre es mit:
c(A = 1, B = 2) A B 1 2
quelle
magrittr bietet eine schöne und saubere Lösung.
result = c(1,2) %>% set_names(c("A", "B")) print(result) A B 1 2
Sie können es auch verwenden, um data.frames in Vektoren umzuwandeln.
df = data.frame(value=1:10, label=letters[1:10]) vec = extract2(df, 'value') %>% set_names(df$label) vec a b c d e f g h i j 1 2 3 4 5 6 7 8 9 10 df value label 1 1 a 2 2 b 3 3 c 4 4 d 5 5 e 6 6 f 7 7 g 8 8 h 9 9 i 10 10 j
quelle
c(1,2) %>%set_names(.)
Um die Antwort von @ joran zu erweitern (ich konnte dies nicht als Kommentar korrekt formatieren): Wenn der benannte Vektor einer Variablen zugewiesen ist, wird auf die Werte von A und B über eine Teilmenge mit der
[
Funktion zugegriffen . Verwenden Sie die Namen, um den Vektor auf dieselbe Weise zu unterteilen, wie Sie die Indexnummer für die Untermenge verwenden könnten:my_vector = c(A = 1, B = 2) my_vector["A"] # subset by name # A # 1 my_vector[1] # subset by index # A # 1
quelle