Sto cercando di evitare l'utilizzo di loop utilizzando apply
per applicare una funzione definita dall'utente a una matrice. Il problema che ho è che ci sono parametri aggiuntivi che la mia funzione usa e differiscono per ogni colonna della matrice. Di seguito è un esempio di giocattolo.Utilizzare "apply" per applicare una funzione a una matrice in cui i parametri sono specifici della colonna
Say Ho la seguente funzione:
foo <- function(x, a, b, c) return((a*x + b)^c)
e voglio applicarlo a una matrice bar
utilizzando diversi valori di a
, b
e c
per ogni colonna.
bar <- matrix(1:15, ncol = 3)
a <- 4:6
b <- 3:1
c <- 1:3
In questo caso, per la prima colonna di bar
, allora a=4
, b=3
e c=1
. Ho provato questo,
apply(bar, 2, foo, a=a, b=b, c=c)
ma questo è chiaramente non corretto, come ogni colonna utilizza tutti i parametri in sequenza prima di avvolgere indietro al primo parametro di nuovo. Eventuali suggerimenti?
Invece di 'split' puoi usare anche 'as.data.frame'. – nicola
@nicola Sì, ho pensato di mantenerlo nella 'matrix' – akrun
Avevo già messo in primo piano il primo e ora vorrei che ci fosse la possibilità di aggiungere voti per modifiche eccezionalmente eleganti. –