2011-09-07 13 views
7

Przenoszę część programu (za mało, aby skompilować i uruchomić) z R do C++. Nie jestem zaznajomiony z R. ja zrobiłem dobrze używając odniesienia online, ale był zakłopotany przez następujący wiersz:W R, co robi indeks ujemny?

cnt2.2<-cnt2[,-1] 

Domyślam:

  1. cnt2 to 2 wymiarowa macierz
  2. cnt2.2 to nowa zmienna zadeklarowana z kropką "." w taki sam sposób, w jaki byłby znak alfabetu.
  3. <- to zadanie.
  4. [,-1] uzyskuje dostęp do części tablicy. Myślałem, że [,5] oznacza wszystkie wiersze, tylko 5. kolumna. Jeśli to prawda, nie mam pojęcia, co odnosi się do -1.

Odpowiedz

8

Ujemne indeksy określić upuszczenie (zamiast zatrzymywania) poszczególnych elementów ... więc x[,-1] określa upuszczenie pierwszej kolumny (wiersze są pierwszy wymiar, przed przecinkiem, a kolumny to drugi wymiar, po przecinku). Z ?"[" (http://stat.ethz.ch/R-manual/R-devel/library/base/html/Extract.html)

For ‘[’-indexing only: ‘i’, ‘j’, ‘...’ can be logical 
      vectors, indicating elements/slices to select. Such vectors 
      are recycled if necessary to match the corresponding extent. 
      ‘i’, ‘j’, ‘...’ can also be negative integers, indicating 
      elements/slices to leave out of the selection. 
4

1) cnt2 to 2 wymiarowa macierz

z kodu, który podałeś to rzeczywiście 2-wymiarowa struktura jakiegoś (dość ewentualnie macierzy).

2) cnt2.2 to nowa zmienna zadeklarowana z kropką "." w taki sam sposób, w jaki byłby znak alfabetu.

Prawidłowo.

3) < - to zadanie.

Prawidłowo.

4) [, -1] uzyskuje dostęp do części tablicy. Myślałem, że [, 5] oznacza wszystkie wiersze, tylko 5 kolumnę. Jeśli to prawda, nie mam pojęcia, co odnosi się do -1.

[,-1] wybiera wszystkie kolumny wyjątkiem kolumny 1. Zauważ, że w przeciwieństwie do C++ indeksy w R zaczynają się od jednego zamiast zera.

+0

+1 za komentarz na temat indeksowania od 1 (chociaż mam nadzieję, że PO już to rozgryzł) –