R,映射数据帧中的项



这里完全是新手。请解释一下这一行到底是怎么工作的,剩下的我都明白了:

gene_symbol <- id2symbol$gene_symbol[id2symbol$Ensembl == gene_id]

在这种情况下,我知道等于TRUE的==是如何工作的?还是有别的意思?非常感谢!

cancer_genes <- c("ENSG00000139618", "ENSG00000106462", "ENSG00000116288")
id2symbol <- data.frame(
"Ensembl" = c("ENSG00000141510", "ENSG00000139618", "ENSG00000106462", "ENSG00000116288"),
"gene_symbol" = c("TP53", "BRCA2", "EZH2", "PARK7")
)
gene_id_converter <- function(gene_id) {
gene_symbol <- id2symbol$gene_symbol[id2symbol$Ensembl == gene_id]
return(gene_symbol)
}
gene_id_converter(gene_id="ENSG00000141510")

使用该函数,我们可以使用Vectorize或遍历元素来获取值

sapply(cancer_genes, gene_id_converter)

与产出

ENSG00000139618 ENSG00000106462 ENSG00000116288 
"BRCA2"          "EZH2"         "PARK7" 

==是元素操作符,即它应该具有相同长度的lhs和rhs,或者rhs可以具有长度为1的循环。==的输出是一个逻辑TRUE/FALSE,用于从id2symbol$gene_symbol中提取相应的值。

因此,如果向函数提供多个元素,就会存在长度差异,并且由于回收

而可能得到意想不到的结果。
> id2symbol$Ensembl == cancer_genes[1]
[1] FALSE  TRUE FALSE FALSE
> id2symbol$Ensembl == cancer_genes
[1] FALSE FALSE FALSE FALSE
Warning message:
In id2symbol$Ensembl == cancer_genes :
longer object length is not a multiple of shorter object length

因此,通过循环cancer_genes,它将使用单个元素进行循环并返回逻辑TRUE/FALSE,并获得相应的id2symbol$gene_symbol,其中存在TRUE元素

最新更新