Comment jongler avec des dimensions et de remplacer des valeurs dans une matrice en r

Par défaut, R essaie toujours de simplifier les objets au plus petit nombre de dimensions possibles lorsque vous utilisez les crochets pour extraire des valeurs d'un tableau. Donc, si vous demandez pour une seule colonne ou une ligne, R fera qu'un vecteur en laissant tomber une dimension.

Comme avec des vecteurs, vous pouvez combiner plusieurs numéros dans les indices. Si vous souhaitez déposer les première et troisième lignes de la matrice, vous pouvez le faire comme ceci:

> First.matrix [-c (1, 3)] [1] 5 2 8 11

Attendez une minute. . . . Il ya un seul indice. R ne retourne pas une matrice ici - il renvoie un vecteur!

Vous pouvez forcer R de garder toutes les dimensions en utilisant l'argument supplémentaire tomber à partir de la fonction d'indexation. Pour obtenir la deuxième rangée retourné comme une matrice, vous effectuez les opérations suivantes:




> First.matrix [2,, drop = FALSE] [1] [2] [3] [4] [1], 2 5 8 11

Cela semble comme par magie totale, mais il est pas si difficile. Vous avez maintenant trois positions entre les parenthèses, le tout séparé par des virgules. La première position est l'index de ligne. La deuxième position est l'indice de colonne. Mais alors quoi?

En fait, les crochets fonctionnent comme une fonction, et l'indice de ligne et index de la colonne des arguments pour les crochets. Maintenant, vous ajoutez un argument supplémentaire tomber avec la valeur FAUX. Comme vous le faites avec toute autre fonction, vous séparez les arguments par des virgules. Mettez tout cela ensemble, et vous avez le code montré ici.

Remplacement de valeurs dans une matrice se fait d'une manière très similaire à remplacer les valeurs dans un vecteur. Pour remplacer la valeur dans la deuxième ligne et troisième colonne du first.matrix avec 4, vous utilisez le code suivant.

> First.matrix [3, 2] lt; - 4> first.matrix [1] [2] [3] [4] [1], 1 4 7 10 [2], 2 5 8 11 [3], 3 4 9 12

Vous pouvez également modifier une ligne ou une colonne entière de valeurs en ne précisant pas l'autre dimension. Notez que les valeurs sont recyclés, afin de changer la deuxième rangée à la séquence 1, 3, 1, 3, vous pouvez simplement faire ce qui suit:

> First.matrix [2], lt; - c (1,3)> first.matrix [1] [2] [3] [4] [1,] 1 4 7 10 [2], 1 3 1 3 [3], 3 4 9 12

Vous pouvez également remplacer un sous-ensemble de valeurs au sein de la matrice par une autre matrice. Vous ne devez pas même pour spécifier les valeurs de matrice - un vecteur fera. Jetez un oeil à la suite de le code suivant:

> First.matrix [1: 2, 3: 4] lt; - c (8,4,2,1)> first.matrix [1] [2] [3] [4] [1], 1 4 8 2 [2,] 1 3 4 1 [ 3], 3 4 9 12

Ici vous modifiez les valeurs dans les deux premières lignes et les deux dernières colonnes vers les numéros 8, 4, 2, et 1.

R lit et écrit des matrices en colonne par défaut. Donc, si vous mettez un vecteur dans une matrice ou un sous-ensemble d'une matrice, il sera mis en colonne par colonne indépendamment de la méthode. Si vous voulez faire cette ligne-sage, vous devez d'abord construire une matrice avec les valeurs en utilisant l'argument byrow = TRUE. Puis vous utilisez cette matrice à la place du vecteur original pour insérer les valeurs.


» » » » Comment jongler avec des dimensions et de remplacer des valeurs dans une matrice en r