我想用
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
是的。
是什么导致了这个错误?我该如何克服它?