C'è un modo per utilizzare mapply su due vettori per costruire una lista nominata? Il primo vettore sarà di tipo character
e contiene i nomi utilizzati per l'elenco mentre il secondo contiene i valori.Creazione di una lista con nome da due vettori (nomi, valori)
Finora, l'unica soluzione che ho è:
> dummyList = list()
> addToList <- function(name, value) {
+ dummyList[[name]] <- value
+ }
> mapply(addToList, c("foo", "bar"), as.list(c(1, 2))
$foo
`1`
$bar
`2`
Questa sembra una soluzione piuttosto artificioso, ma non riesco a capire come farlo in altro modo. I problemi che ho con esso sono:
Si richiede la creazione di
dummyList
anche sedummyList
non è mai cambiato, ed è una lista vuota dopo la chiamata amapply
.Se il vettore numerico,
c(1, 2)
, non viene convertito in un elenco, il risultato della chiamata amapply
è un vettore denominato di doppio.
Per aggirare il problema 2, posso sempre chiamare mapply
su due vettori e quindi chiamare as.list
sul risultato, ma sembra che ci dovrebbe essere un modo per creare direttamente una lista con i valori essere in un vettore.
Grazie. Non ero a conoscenza della funzione 'setNames' e si adatta perfettamente ai miei obiettivi. Per curiosità, c'è un modo per farlo usando 'lapply' di cui sei a conoscenza? Sembra possibile che 'lapply' possa restituire liste. –
cosa intendi con "usare' lapply' "? Vuoi eseguire la stessa operazione usando 'lapply'? (Se sì, perché? Come esercizio di programmazione? Più contesto sarebbe utile.) Se vuoi fare qualcos'altro, modifica la tua domanda o chiedi a una nuova? –