Modérateur : Groupe des modérateurs
Renaud Lancelot a écrit :Je ne comprends pas quelle opération vous voulez effectuer. Merci de décrire avec des mots, voire de donner un micro-exemple avec les éléments de départ et le résultat attendu.
Renaud
Code : Tout sélectionner
> Liste <- list(m1 = matrix(1:4, ncol = 2), m2 = matrix(5:8, ncol = 2), m3 = matrix(9:12, ncol = 2))
> Liste
$m1
[,1] [,2]
[1,] 1 3
[2,] 2 4
$m2
[,1] [,2]
[1,] 5 7
[2,] 6 8
$m3
[,1] [,2]
[1,] 9 11
[2,] 10 12
>
> choix <- scan(n = 2, what = 'character')
1: m1
2: m3
Read 2 items
> do.call("+", Liste[choix])
[,1] [,2]
[1,] 10 14
[2,] 12 16
Renaud Lancelot a écrit :Comme ça ?
Code : Tout sélectionner
> listmat <- list(m1 = matrix(1:4, ncol = 2), m2 = matrix(5:8, ncol = 2))
> NbreMatrice <- length(listmat)
>
> choix <- scan(n = NbreMatrice, what = 'character')
1: m1
2: m2
Read 2 items
>
> total <- NbreMatrice + 1
> listmat[[total]] <- do.call ("+", listmat[choix])
>
> listmat
$m1
[,1] [,2]
[1,] 1 3
[2,] 2 4
$m2
[,1] [,2]
[1,] 5 7
[2,] 6 8
[[3]]
[,1] [,2]
[1,] 6 10
[2,] 8 12
> names(listmat)[total] <- paste(scan(n = 1, what = 'character'), total, sep = "")
1: m
Read 1 item
> listmat
$m1
[,1] [,2]
[1,] 1 3
[2,] 2 4
$m2
[,1] [,2]
[1,] 5 7
[2,] 6 8
$m3
[,1] [,2]
[1,] 6 10
[2,] 8 12
Renaud Lancelot a écrit :J'ai changé l'intitulé....
Aurais-tu une autre solution a me proposer pour faire une somme de plusieurs matrice présente dans une liste?
Code : Tout sélectionner
> listmat <- list(m1 = matrix(1:4, ncol = 2),
+ m2 = matrix(5:8, ncol = 2),
+ m3 = matrix(9:12, ncol = 2),
+ m4 = matrix(13:16, ncol = 2))
>
> for(i in seq(length(listmat)))
+ X <- if(i == 1) listmat[[i]] else X + listmat[[i]]
>
> X
[,1] [,2]
[1,] 28 36
[2,] 32 40
Autre question:
Est-ce que cela serait également réalisable pour une opération de division mais cette fois-ci seulement entre 2 matrices (ce qui semble plus logique dailleurs!!! lol)
Code : Tout sélectionner
> matrix(1:4, ncol = 2) / matrix(1:4, ncol = 2)
[,1] [,2]
[1,] 1 1
[2,] 1 1
Retourner vers « Archives : Manipulation de données avec R »
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité