将全名分配给首字母缩略词

Assigning full names to acronyms

目前我有一个数据框,其中包含独特癌症类型的首字母缩写词 (hotspot_mockup),如下所示:

癌症 基因
AASTR IDH1
ACRM NRAS

在另一个数据框中,我将这 184 个唯一的首字母缩略词及其对应的全名 (new_hotspot_cancers)。形式为:

首字母缩略词 全名
AASTR 间变性星形细胞瘤
ACRM 肢端黑色素瘤

我想用第二个数据框中相应的全名替换第一个数据框中的首字母缩略词(当然假设首字母缩写词存在于第二个数据框中)。总的来说,我希望结果看起来像:

癌症 基因
间变性星形细胞瘤 IDH1
肢端黑色素瘤 NRAS

我在考虑某种“for”循环,但我知道这在 R 中是不受欢迎的。一如既往,任何指导将不胜感激!

I was thinking of some kind of "for" loop, but I know this is frowned upon in R.

并不是说它不受欢迎,而是那些有其他编程语言经验的人倾向于在不需要时在 R 中使用 for 循环——要么是因为 R 默认向量化,要么是因为有像 [= purrr 包中的 11=] 或 map() 可以更有效地完成 for 循环的工作。

在这种情况下,您可以从 dplyr 包中执行 left_join()

df1 <- data.frame(Cancer = c("AASTR", "ACRM"), Gene = c("IDH1", "NRAS"))
df2 <- data.frame(Acronym = c("AASTR", "ACRM"), Full_Name = c("Anaplastic Astrocytoma", "Acral Melanoma"))

dplyr::left_join(df1, df2, by = c("Cancer" = "Acronym"))

  Cancer Gene              Full_Name
1  AASTR IDH1 Anaplastic Astrocytoma
2   ACRM NRAS         Acral Melanoma

您可以使用 merge() 进行右外连接。该函数会自动匹配列名,因此请确保 df1 中的 'Cancer' 和 df2 中的 'Acronym' 具有相同的名称。

colnames(df2)[1] <- 'Cancer'
df.new <- merge(x = df, y = df2, by = "Cancer", all.y = TRUE)

这会为您提供一个新的数据框,其中包含首字母缩略词、全名和您之后可以过滤的基因。