Удалить все значения вектора, кроме определенных индексов - PullRequest
0 голосов
/ 18 марта 2020

У меня длинный вектор (его тип - символ). Я хочу удалить все значения, кроме тех, чьи индексы кратны 7. Например, если длина моего вектора 100, я хочу, чтобы все ячейки были пустыми, кроме 7, 14, 21,..., 98 клеток.

Оцените

1 Ответ

3 голосов
/ 18 марта 2020

В R вы можете использовать целые числа или логический вектор в качестве индекса (или символьный вектор для именованного доступа).

Ваша проблема может быть решена с помощью любого из них; Например, вы можете сгенерировать целочисленный вектор из чисел 7, 14,… используя seq:

index = seq(7L, length(x), by = 7L)

Или вы можете сгенерировать логический вектор, который TRUE тогда и только тогда, когда соответствующий целочисленный индекс делится на 7:

index = seq_along(x) %% 7L == 0L

В любом случае, вы затем используете этот индекс для подмножества ваших данных:

x[index]

Или, если вы хотите сохранить другие значения, но «пустые» их (что означает «пустой», хотя?) вы можете присвоить им пустое значение:

x[! index] = NA_character_ # or "", or something else.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...