2017-10-20 20 views
0

Quelle est la syntaxe pour référencer des cellules individuelles dans une matrice? Je voudrais référencer des cellules individuelles dans un R data.frame pour créer des fonctions. Par exemple, dire que j'ai une matrice 2x2 avec les valeursCellules de référence dans data.frame ou matrix pour créer une fonction

3 4 
5 6 

et je veux créer une fonction qui fera ((3 + 4)/(3 + 4 + 5)). J'ai essayé de le faire en tant que fonction et en créant une nouvelle variable sans succès.

Subj_2_block_4a$HRLR0 <- c(2,2)+c(2,4) me donne quatre observations sous une nouvelle variable. Les références

Subj_2_block_4a$HRLR0 <- ((2:2 + 2:4)/(2:2 + 2:4 + 2:1 +2:3)) prennent ces références en référence aux matrices plutôt qu'aux cellules.

Subj_2_block_4a$HRLR0 <- nrow2:ncol2 + nrow2:ncol4; ne fonctionne pas du tout.

J'ai trouvé beaucoup de ressources pour ajouter des colonnes ou des lignes de différentes matrices, mais je n'ai trouvé aucune explication claire sur la façon d'écrire des fonctions mathématiques en utilisant des cellules dans UNE matrice.

+0

juste mis à jour ma réponse à vous montrer d'autres façons de faire référence à des cellules spécifiques .. jeter un oeil – Thai

Répondre

1

Faire référence à un élément dans une matrice

Si vous voulez construire une matrice, vous

mtrx <- matrix(c(3,4,5,6), # the data elements 
       nrow=2,    # number of rows 
       ncol=2,    # number of columns 
       byrow = TRUE)  # will format in the way you want 

#Take a look in your matrix by just doing this: 

mtrx      # print your matrix 
>  [,1] [,2] 
> [1,] 3 4  
> [2,] 5 6 

Et finalement, si vous souhaitez référencer l'élément à la ligne X, colonne Y , qui peut être consulté par mtrx [X, Y]. Dans votre cas:

# Your second row, second col: 

mtrx[2, 2]  # element at 2nd row, 2rd column 
> [1] 6 

Si vous voulez voir toute la ligne ou la colonne entière, ce qui est possible aussi

mtrx[2, ] # entire second row 
mtrx [ ,2] # entire second column 

Et vous pouvez également faire référence à plus d'un élément à la fois. .. permet de créer une matrice plus grande pour que

#Creating a 3x3 matrix 
Lmtrx<-matrix(c(3,4,5,6,7,8,1,2,6),ncol = 3,nrow = 3, byrow = TRUE) 
Lmtrx # prit to take a look 

#Making reference to two columns at once: 1rst and 3rd 
Lmtrx[ ,c(1,3)] 

Faire référence à un cel dans une trame de données

Pour faire référence à une cellule dans un data.frame au lieu d'une matrice, est assez facile aussi bien:

df$col1[1] # First row in first column 
df[1,1] # First row in first column, another way to get it 
df$col1 # entire first column 
df[ ,1] # entire first column, another way to get it 
df[1, ] # entire first row