R 用子字符串替换数据帧的行名

R 用子字符串替换数据帧的行名,r,dataframe,R,Dataframe,我有一个具有不同行名的大型数据帧(名为test) > 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

我有一个具有不同行名的大型数据帧(名为test)

> 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"

如您所见,部分行名称具有相同的部分名称。例如,每一行的部分名称
MYC
我想将整行名称改为“MYC”。总而言之,行名称包含5个因素:
MYC
EV
PIM
WDR
OBX

正如@teucer所指出的,行名不能重复。相反,您可以在数据框中创建一个新列,并使用一个简单的正则表达式来提取因子。比如说,

## Your row names
x = 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",
      "U2OS.MYC.18.6.9","U2OS.OBX.18.6.9", "X1.U2OS...OBX","X2.U2OS...MYC")

test$rnames = gsub(".*(MYC|EV|PIM|WDR|OBX).*", "\\1", x)

可选择使用
stringr
软件包

str_extract(x, "MYC|EV|PIM|WDR|OBX")

在R中,数据帧不允许有重复的行名称!您对colnames和rowname的使用相当混乱。@Joris,@Lisanne:我怀疑列名引用可能是一个输入错误。@csgillespie:我很确定事实上。。。