【问题标题】:R - if column value matches vector item, take value from second vectorR - 如果列值与向量项匹配,则从第二个向量中获取值
【发布时间】:2022-07-20 00:54:12
【问题描述】:

我有下表:

library( tidyverse )
data = read.table(text="gene1
           gene2
           gene3", , sep="\t", col.names = c("Protein"))

还有以下两个列表:

genes = c("gene1", "gene3")
genes_names = c("name1", "name3")

gene_names 中的每一项都对应genes 中的每一项,具有相同的索引。

现在,我想在data 中创建一个名为ToLabel 的新列,如果data$Protein 中的列值与genes 匹配,则该列包含gene_names 中的项目。

data %>% mutate( ToLabel = ifelse( Protein %in% genes, genes_names, "no" ) )

这没有按预期工作。我的预期结果:

Protein ToLabel
gene1   name1
gene2   no
gene3   name3

【问题讨论】:

    标签: r vector indices


    【解决方案1】:

    如果我们想通过匹配替换多个值,请使用连接

    library(dplyr)
    data %>%
       mutate(Protein = trimws(Protein)) %>% 
       left_join(tibble(Protein = genes, ToLabel = genes_names)) %>%
       mutate(ToLabel = coalesce(ToLabel, "no"))
    

    -输出

      Protein ToLabel
    1   gene1   name1
    2   gene2      no
    3   gene3   name3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      相关资源
      最近更新 更多