Il mio problema è fondamentalmente questo:Dato un elemento di una lista, come faccio a recuperare il suo indice all'interno della lista?
Ho una lista, L, dove ogni elemento è una matrice della stessa dimensione. Ho bisogno di moltiplicare ogni matrice all'interno di questa lista per il suo elemento corrispondente in un vettore esterno h, e quindi sommare tutte le matrici.
set.seed(101)
L <- replicate(3,matrix(rnorm(4),2),simplify=FALSE)
h <- 2:4
# I need this
L[[1]]*h[1] + L[[2]]*h[2] +L[[3]]*h[3]
Dato che ho bisogno di sperimentare un diverso numero di matrici, e ho un gruppo di loro, ho avuto modo di farlo in modo intelligente. La mia idea era
L1 <- lapply(L, function(x) x*h[x])
L2 <- Reduce('+', L1)
Dove "h [x]" sarebbe l'indicizzazione del vettore h dall'indice della matrice x all'interno della lista L, quindi vorrei ottenere
L1 = list(L[[1]]*h[1], L[[2]]*h[2], L[[3]]*h[3])
Quindi, la domanda è, come posso ottenere l'indice di un elemento in una lista usando l'elemento stesso? Qualcosa come h [L [[m1]]] per ottenere h [1].
Oppure, se hai qualche altro modo di risolvere il mio problema, come posso farlo?
È possibile completare l'esempio fornendo esempi di matrici m1, m2, m3? – Frank
l'esempio dato da Ben Bolker sotto funziona –