создает (или воссоздает) объект y, который будет содержать не несуществующие (только существующие) значения x в том же самом порядке. Заметим, что, если у x есть отсутствующие значения, то y будет короче, чем x. Также:
> (x+1) [(! is.na (x)) & x> 0] -> z
создает объект z и помещает в него значение вектора x+1, для которого соответствующее значение в x и не пропущено и положительное.
– Вектор положительных целых величин. В этом случае значение в индексном векторе должно лежать в наборе {1, 2…, length (x)}. Соответствующие элементы вектора выбраны и связаны в этом порядке в результате. Индексный вектор может иметь любую длину, и результат имеет одинаковую длину с индексным вектором. Например, x [6] является шестой компонентой x и
выбирает первые 10 элементов x (предполагается, что length (x) не меньше, чем 10). Также:
> c («x», «y») [rep (c (1,2,2,1), times=4)]
(по общему признанию вещь маловероятная), производит символьный вектор длины 16, состоящий из «x», «y», «y», «x» повторенных четыре раза.
– Вектор отрицательных целых величин. Такой индексный вектор указывает значение, которое будет исключаться, а не включаться. Таким образом:
даст все у, кроме первых пяти значений.
– Вектор символьных строк. Эта возможность применяется там, где у объекта есть атрибут имен для идентификации его компонентов. В этом случае подвектор вектора имен может использоваться таким же образом в качестве положительных целых меток в пункте 2 далее выше:
> fruit <– c (5, 10, 1, 20)
> names (fruit) <– c («orange», «banana», «apple», «peach»)
> lunch <– fruit [c («apple», «orange»)]
Преимущество состоит в том, что алфавитно-цифровые имена часто легче запомнить, чем числовые индексы. Эта опция особенно полезна в соединении с фреймами данных, как увидим позже.
Также индексное выражение может появиться на приемном конце присвоения, когда операция присвоения выполняется только на этих элементах вектора. Выражение должно иметь вектор вида [index_vector], поскольку наличие произвольного выражения вместо векторного имени не имеет здесь большого смысла.
Присвоенный вектор должен соответствовать длине индексного вектора, и в случае логического индексируют вектор, у него должна снова быть та же самая длина как вектор, который он индексирует.