首页 > 解决方案 > 在一行中一个一个地转换向量中的变量

问题描述

此代码将核苷酸向量转换为数字从 1 到 4 的编码版本。但是,我想要更优雅的东西,可能在一行中。这可能吗?

vector2 <- c("c","a","g","g","c","g","g","g","a","t","t","t","c","t","c","t","t","g","t","t","g","a","c","a","g",  "a","a","t","c","c")
vector2[vector2=="a"]<-1
vector2[vector2=="c"]<-2
vector2[vector2=="g"]<-3
vector2[vector2=="t"]<-4
as.numeric(vector2)

谢谢

标签: r

解决方案


这是基础 R 中的解决方案:

sapply(vector2, switch, a = 1, c = 2, g = 3, t = 4)

应该存在更有效的东西,但它是优雅的并且在一条线上。


推荐阅读