2010-12-11 16 views
3

In R: Comment effectuer une opération de journalisation sur chaque élément d'une matrice sans utiliser de boucle?In R: Comment effectuer la connexion d'éléments d'une matrice sans boucle

J'ai une matrice m et je veux que chaque élément soit remplacé par son journal. log (m) ne fonctionne pas.

params = array(list(),c(2, 2)) 

puis j'ai défini manuellement tous les éléments.

params 

[1] [2]

[1,] 3 3

[2,] 3 3

log(params) 

Error in log (params): Argument non numérique de la fonction mathématique

Répondre

4

log(M) œuvres pour nous tous sur des matrices correctes:

R> M <- matrix(1:4,2) 
R> M 
    [,1] [,2] 
[1,] 1 3 
[2,] 2 4 
R> log(M) 
     [,1] [,2] 
[1,] 0.00000 1.0986 
[2,] 0.69315 1.3863 
R> 

Pouvez-vous nous montrer votre M?

+0

Je l'ai ajouté à ma question. – Uri

+1

Votre type de données est inapproprié. Créez un * type numérique * comme * par exemple * dans ma réponse. –

1

Vous avez échoué lors de la création d'une matrice - vous disposez ainsi d'une matrice de listes et vous souhaitez une matrice de nombres.
Essayez ceci:

params<-array(3,c(2,2)) 
log(params) 
0

Supposons maintenant il y a un 0 dans certaines cellules de la matrice. En outre, supposons que vous voulez qu'un 0 apparaisse dans la sortie pour de telles cellules.

Comment calculeriez-vous la solution maintenant?

Notez que log (0) n'est pas un bon nombre.