Я пытаюсь использовать dplyr::mutate()
, чтобы вернуть целочисленное значение уровня столбца фактора для каждой строки. Вот что у меня есть:
a <- tibble(group = factor(c(rep(c('group1', 'groupA', 'groupB'), 4), rep('groupC', 3))),
name1 = factor(c(rep(c('gene1', 'gene2', 'geneA', 'geneB'),3),
c('gene1', 'gene2', 'geneA'))),
name2 = factor(c(rep(c('geneB', 'geneA', 'gene2', 'gene1'), 3),
c('geneB', 'geneA', 'gene2')))) %>%
arrange(group)
a <- group_by(a, group) %>%
mutate(n = row_number(),
n_max = max(n),
lev1 = which(levels(a$name1) == name1))
, которое вызывает сообщение об ошибке:
Error in mutate_impl(.data, dots) :
Column `lev1` must be length 4 (the group size) or one, not 2
но если я просто запустите which(levels(a$name1) == 'gene2')
, я получу желаемое значение 2
.
Что вызывает эту ошибку и как ее обойти?