2015-12-03 2 views
2

Je travaillais sur une base de données avec 8 lignes et 5 colonnes. Je cherchais à imprimer les 3 dernières lignes seulement.R- utilisation de la parenthèse dans les données

j'ai écrit d'abord ceci:

last_3 <- my_df[ nrow(my_df) - 2 : nrow(my_df),] 
last_3 

Ce imprimé les 6 premiers rangs à partir du numéro de la ligne 6 à la ligne numéro 1 (dans l'ordre décroissant)

Alors je l'ai fait et cela a fonctionné comme prévu (c'est-à-dire les numéros de rangée 6,7 et 8)

last_3 <- my_df[(nrow(my_df) - 2) : nrow(my_df),] 
last_3 

Quelqu'un peut-il expliquer les changements apportés par les parenthèses? Et comment la sortie dans le premier cas a été générée.

Répondre

2

Ceci peut être expliqué par l'observation que le côlon opérateur : a un ordre supérieur de priorité que l'opérateur moins -. Voici un exemple qui vous montre ce qui se passait, en supposant que votre trame de données my_df dispose de 4 lignes:

my_df <- data.frame(v1=c(1,2,3,4), v2=c(1,2,3,4), v3=c(1,2,3,4)) 

nrow(my_df) - 2 : nrow(my_df) 

4 - (2 : 4) 
4 - [2, 3, 4] 
[2, 1, 0] 

En d'autres termes, vous étiez vraiment ajouter un nombre à la séquence 2:4. Lorsque vous avez enveloppé les indices avec des parenthèses, vous avez obtenu le comportement que vous souhaitiez vraiment:

(nrow(my_df) - 2) : nrow(my_df) 

(4 - 2) : 4 
2 : 4 
[2, 3, 4]