我有一个关于 gsub 使用的问题。我的数据的行名称具有相同的部分名称。见下文:
> rownames(test)
[1] "U2OS.EV.2.7.9" "U2OS.PIM.2.7.9" "U2OS.WDR.2.7.9" "U2OS.MYC.2.7.9"
[5] "U2OS.OBX.2.7.9" "U2OS.EV.18.6.9" "U2O2.PIM.18.6.9" "U2OS.WDR.18.6.9"
[9] "U2OS.MYC.18.6.9" "U2OS.OBX.18.6.9" "X1.U2OS...OBX" "X2.U2OS...MYC"
[13] "X3.U2OS...WDR82" "X4.U2OS...PIM" "X5.U2OS...EV" "exp1.U2OS.EV"
[17] "exp1.U2OS.MYC" "EXP1.U20S..PIM1" "EXP1.U2OS.WDR82" "EXP1.U20S.OBX"
[21] "EXP2.U2OS.EV" "EXP2.U2OS.MYC" "EXP2.U2OS.PIM1" "EXP2.U2OS.WDR82"
[25] "EXP2.U2OS.OBX"
在我之前的问题中,我问是否有办法为相同的部分名称获取相同的名称。看这个问题:Replacing rownames of data frame by a sub-string
答案是一个非常好的解决方案。函数gsub的使用方式如下:
transfecties = gsub(".*(MYC|EV|PIM|WDR|OBX).*", "\\1", rownames(test)
现在,我遇到了另一个问题,我用 R 运行的程序( Galaxy )无法识别 |人物。我的问题是,是否有另一种方法可以在不使用此 | 的情况下获得相同的解决方案?
谢谢!
最佳答案
如果您不想使用“|”性格,你可以尝试这样的事情:
Rnames <-
c( "U2OS.EV.2.7.9", "U2OS.PIM.2.7.9", "U2OS.WDR.2.7.9", "U2OS.MYC.2.7.9" ,
"U2OS.OBX.2.7.9" , "U2OS.EV.18.6.9" ,"U2O2.PIM.18.6.9" ,"U2OS.WDR.18.6.9" )
Rlevels <- c("MYC","EV","PIM","WDR","OBX")
tmp <- sapply(Rlevels,grepl,Rnames)
apply(tmp,1,function(i)colnames(tmp)[i])
[1] "EV" "PIM" "WDR" "MYC" "OBX" "EV" "PIM" "WDR"
但我会认真考虑向 Galaxy 团队提及这一点,因为不能使用 OR 符号似乎相当尴尬......
关于R:用子字符串替换数据框的行名[2],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6291325/