Вот пример, который использует mtcars, встроенный в набор данных, для возврата элементов вектора / столбца x
(для вас это будет Name
), где элементы в векторе / столбце y
(для вас это будет JobID
) соответствует значению v
(для вас это будет 1
).
findName <- function(x, y, v) {
x[y == v]
}
findName(rownames(mtcars), mtcars$cyl, 4)
Реальность такова, что вам действительно не нужно делать это как функцию, это будет ненужный. Было бы меньше работы просто писать напрямую по мере необходимости df$Name[df$JobID == 1]
. Используя ваши данные, приведенные выше решения возвращают:
> findName(df1$Name, df1$JobID, 1)
[1] Ted Bill
Levels: Bill Frank Ox Ted
> df1$Name[df1$JobID == 1]
[1] Ted Bill
Levels: Bill Frank Ox Ted
Они работают так: они выполняют линейный поиск , чтобы вернуть логический вектор (TRUE
/ FALSE
; посмотрим, что произойдет, если вы выполните только df$JobID == 1
), а затем передадите этот логический вектор для подмножества вектора Name
в те, у которых логический вектор равен TRUE
.