R функция which() – поиск индекса по условию
Функция which() в R используется для возврата позиций индексов элементов, удовлетворяющих условию.
which() очень часто используется при фильтрации данных и поиске конкретных элементов.
Синтаксис функции which() выглядит следующим образом:
which(x, arr.ind = FALSE)
Описание параметра:
xЛогический вектор или выражение, содержащее логическое условие.
arr.indПри использовании для матриц/массивов — возвращать ли индексы строк и столбцов. По умолчанию — FALSE.
Пример
scores <- c(55, 62, 78, 85, 92, 70, 88, 95, 60, 82)
# Найти индексы проходных оценок (>=60)
pass_idx <- which(scores >= 60)
print("Индексы сдавших студентов:")
print(pass_idx)
# Получить соответствующие баллы по индексам
print("Баллы сдавших студентов:")
print(scores[pass_idx])
# Найти позицию максимального значения
max_idx <- which.max(scores)
print(paste("Индекс максимального балла:", max_idx, "Балл:", scores[max_idx]))
# Найти позицию минимального значения
min_idx <- which.min(scores)
print(paste("Индекс минимального балла:", min_idx, "Балл:", scores[min_idx]))
# Найти индексы проходных оценок (>=60)
pass_idx <- which(scores >= 60)
print("Индексы сдавших студентов:")
print(pass_idx)
# Получить соответствующие баллы по индексам
print("Баллы сдавших студентов:")
print(scores[pass_idx])
# Найти позицию максимального значения
max_idx <- which.max(scores)
print(paste("Индекс максимального балла:", max_idx, "Балл:", scores[max_idx]))
# Найти позицию минимального значения
min_idx <- which.min(scores)
print(paste("Индекс минимального балла:", min_idx, "Балл:", scores[min_idx]))
Выполнение приведенного выше кода дает следующий вывод:
[1] "及格学生的索引:" [1] 2 3 4 5 6 7 8 10 [1] "及格学生的成绩:" [1] 62 78 85 92 70 88 95 82 [1] "最高分索引: 8 成绩: 95" [1] "最低分索引: 1 成绩: 55"
which() также работает с матрицами. В сочетании с arr.ind = TRUE он может возвращать координаты строк и столбцов:
Пример
# Создать матрицу
m <- matrix(1:12, nrow = 3)
print("Матрица:")
print(m)
# Найти позиции строк и столбцов элементов, больших 8
positions <- which(m > 8, arr.ind = ИСТИНА)
print("Позиции элементов, больших 8 (строка, столбец):")
print(positions)
m <- matrix(1:12, nrow = 3)
print("Матрица:")
print(m)
# Найти позиции строк и столбцов элементов, больших 8
positions <- which(m > 8, arr.ind = ИСТИНА)
print("Позиции элементов, больших 8 (строка, столбец):")
print(positions)
Выполнение приведенного выше кода дает следующий вывод:
[1] "矩阵:"
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
[1] "大于 8 的元素位置(行, 列):"
row col
[1,] 1 4
[2,] 2 4
[3,] 3 3
[4,] 3 4
Другие расширения
Примеры на языке R