В R, что делает отрицательный индекс?

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

cnt2.2<-cnt2[,-1]

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

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

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

1) cnt2 является двумерной матрицей

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

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

Правильно.

3) < - задание.

Правильно.

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

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