【发布时间】:2020-04-19 06:44:05
【问题描述】:
我的数据
gene_list <- data.frame(mouse_gene = c("Ccnb1", "Cdk1", "Cdh3", "Cdkn1c"),
human_gene = c("SLCO2B1", "PPP1R3C", "MMP13", "CLEC6A"))
gene_id <- data.frame(gene_id = c("23334", "100001", "12341236", "34553433", "22998", "123121213"),
symbol = c("SLCO2B1", "PPP1R3C", "FX-232", "MMP13", "CLEC6A", "CSCCD"))
我想在gene_list中添加一列可以找到human_gene对应的gene_id,所以我定义了一个函数
find_geneID <- function(x){
ID <- gene_id[which(gene_id$symbol == x),1]
return(ID)
}
然后我使用 dplyr::mutate
gene_list <- gene_list %>% mutate(find_geneID(human_gene))
但是,我得到了回报
Error in Ops.factor(gene_id$symbol, x) : level sets of factors are different
我知道在这种情况下我可以使用 join。但是,我想知道如果我需要在 dplyr::mutate 中使用函数,我应该怎么做。
另外,有时当我想在一列中使用一个值,输入一个函数,然后放入一个新列中,我会得到
Column `new_column` must be length 568 (the number of rows) or one, not 2
谁能告诉我原因?谢谢
【问题讨论】: