【发布时间】:2015-07-27 08:47:28
【问题描述】:
我正在尝试合并数据框和向量,而不是通过列中的精确字符串匹配,而是通过通配符字符串匹配。为了澄清,假设你有这个数据框:
v <-data.frame(X1=c("AGTACAGT","AGTGAAGT","TGTA","GTTA","GAT","GAT"),X2=c(1,1,1,1,1,1))
# X1 X2
# 1 AGTACAGT 1
# 2 AGTGAAGT 2
# 3 TGTA 3
# 4 GTTA 4
# 5 GAT 5
# 6 GAT 6
我想通过为每个 AGT.{3}GT、.{T|G}TA、GAT 模式创建不同的颜色来创建数据框,并创建一个显示该颜色的新列 X3。所以是这样的:
# X1 X2 X3
# 1 AGTACAGT 1 "#FE7F01"
# 2 AGTGAAGT 2 "#FE7F01"
# 3 TGTA 3 "#FE7F00"
# 4 GTTA 4 "#FE7F00"
# 5 GAT 5 "#FE8002"
# 6 GAT 6 "#FE8002"
到目前为止,我正在使用它为每个级别创建颜色,但我不知道如何计算有多少“通配符级别”而不是单个级别:
x <- nlevels(v$X1)
x.colors2 <- colorRampPalette(brewer.pal(8,"Paired"))(x)
G <- data.frame("X1"=levels(v$X1),"X3"=x.colors2)
v <- merge(v,G)
【问题讨论】: