В R, что делает отрицательный индекс? - PullRequest
10 голосов
/ 07 сентября 2011

Я портирую часть программы (недостаточно для компиляции и запуска) с R на C ++.Я не знаком с R. Я сделал все хорошо, используя ссылки онлайн, но был озадачен следующей строкой:

cnt2.2<-cnt2[,-1]

Я предполагаю:

  1. cnt2 is2-мерная матрица
  2. cnt2.2 - это новая переменная, объявленная с точкой '.'используется так же, как и буквенный символ.
  3. <- - это присвоение.
  4. [,-1] обращается к части массива.Я думал, что [,5] означает все строки, только 5-й столбец.Если это правильно, я понятия не имею, что означает -1.

Ответы [ 3 ]

16 голосов
/ 07 сентября 2011

Это описано в разделе 2.7 руководства: http://cran.r -project.org / doc / manual / R-intro.html # Index-векторы

Отрицательноиндекс в объект cnt2, определяющий все строки и все столбцы, кроме первого столбца.

13 голосов
/ 07 сентября 2011

Отрицательные индексы определяют удаление (а не сохранение) определенных элементов ... поэтому x[,-1] указывает удаление первого столбца (строки - это первое измерение до запятой, а столбцы - второе измерение после запятой). От ?"[" (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.
5 голосов
/ 07 сентября 2011

1) cnt2 - двумерная матрица

Из предоставленного вами кода это действительно какая-то двумерная структура (вполне возможно, матрица).

2) cnt2.2 - это новая переменная, объявленная с точкой '.' используется так же, как и буквенный символ.

Correct.

3) <- это задание. </p>

Correct.

4) [, -1] обращается к части массива. Я думал, [, 5] означает все строки, только 5-й столбец. Если это правильно, я понятия не имею, что означает -1.

[,-1] выбирает все столбцы , кроме столбца 1 . Обратите внимание, что в отличие от C ++ индексы в R начинаются с единицы, а не с нуля.

...