которые функционируют для уровней факторов - PullRequest
0 голосов
/ 03 апреля 2019

Я хотел бы использовать функцию which с arr.ind = TRUE для data.frame. Это дает правильный результат, если я использую его по столбцам. Но я не мог получить это для всего data.frame.

Примечание: я редактировал код. Также к коду добавляется ожидаемый результат.

MWE:

df <- data.frame(f1 = factor(c("a","b","a","x","x")), 
                 f2 = factor(c("a","x","x","x","b")))

which(df %in% c("a","b"), arr.ind = TRUE)
# integer(0)  # This is not what I expect

# Expected output
# row col
#   1   1
#   2   1
#   3   1
#   1   2
#   5   2

1 Ответ

0 голосов
/ 03 апреля 2019

Вот метод:

x = as.matrix(df) %in% c("a", "b")
cbind(row(df)[x], col(df)[x])
#      [,1] [,2]
# [1,]    1    1
# [2,]    2    1
# [3,]    3    1
# [4,]    1    2
# [5,]    5    2

Если вы намереваетесь заменить эти значения, переход от столбца к столбцу по всему фрейму данных, вероятно, будет наиболее эффективным (без использования этого результата).

...