Что делает отрицательный индекс в R?

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

cnt2.2<-cnt2[,-1]

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

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

person Brad    schedule 07.09.2011    source источник


Ответы (3)


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

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

person Chase    schedule 07.09.2011

Отрицательные индексы указывают на удаление (а не сохранение) определенных элементов... поэтому x[,-1] указывает на удаление первого столбца (строки - это первое измерение до запятой, а столбцы - это второе измерение после запятой). Из ?"[" ( http://stat.ethz.ch/R-manual/R-devel/library/base/html/Extract.html):

Только для ‘[’-индексации: ‘i’, ‘j’, ‘…’ могут быть логическими векторами, указывающими элементы/срезы для выбора. Такие векторы перерабатываются, если необходимо, чтобы соответствовать соответствующему экстенту. «i», «j», «...» также могут быть отрицательными целыми числами, указывающими элементы/срезы, которые следует исключить из выбора.

person Ben Bolker    schedule 07.09.2011

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

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

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

Верный.

3) ‹- присваивание.

Верный.

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

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

person NPE    schedule 07.09.2011
comment
+1 за комментарий об индексации с 1 (хотя я надеюсь, что ОП уже понял это) - person Ben Bolker; 07.09.2011