Hello,
I am having getting an error that with duplicate row names in R when there are no duplicate row names? I am downloading the raw idat files for a methylation array. Here are the files and here is the code I am trying to run. I think it is reading the Green and Red channels as duplicates (they have the same string until the "Grn" and "Red".
idatFiles
[1] "./GSM2612501_200379120089_R02C01_Grn.idat.gz" "./GSM2612501_200379120089_R02C01_Red.idat.gz"
[3] "./GSM2612502_200379120089_R03C01_Grn.idat.gz" "./GSM2612502_200379120089_R03C01_Red.idat.gz"
[5] "./GSM2612503_200379120089_R04C01_Grn.idat.gz" "./GSM2612503_200379120089_R04C01_Red.idat.gz"
[7] "./GSM2612504_200379120089_R05C01_Grn.idat.gz" "./GSM2612504_200379120089_R05C01_Red.idat.gz"
[9] "./GSM2612505_200379120089_R06C01_Grn.idat.gz" "./GSM2612505_200379120089_R06C01_Red.idat.gz"
[11] "./GSM2612506_200379120089_R01C02_Grn.idat.gz" "./GSM2612506_200379120089_R01C02_Red.idat.gz"
[13] "./GSM2612507_200379120089_R02C02_Grn.idat.gz" "./GSM2612507_200379120089_R02C02_Red.idat.gz"
[15] "./GSM2612508_200379120089_R03C02_Grn.idat.gz" "./GSM2612508_200379120089_R03C02_Red.idat.gz"
[17] "./GSM2612509_200379120089_R04C02_Grn.idat.gz" "./GSM2612509_200379120089_R04C02_Red.idat.gz"
[19] "./GSM2612510_200379120089_R05C02_Grn.idat.gz" "./GSM2612510_200379120089_R05C02_Red.idat.gz"
[21] "./GSM2612511_200379120089_R06C02_Grn.idat.gz" "./GSM2612511_200379120089_R06C02_Red.idat.gz"
[23] "./GSM2612512_200379120136_R01C01_Grn.idat.gz" "./GSM2612512_200379120136_R01C01_Red.idat.gz"
[25] "./GSM2612513_200379120136_R02C01_Grn.idat.gz" "./GSM2612513_200379120136_R02C01_Red.idat.gz"
[27] "./GSM2612514_200379120136_R03C01_Grn.idat.gz" "./GSM2612514_200379120136_R03C01_Red.idat.gz"
[29] "./GSM2612515_200379120136_R04C01_Grn.idat.gz" "./GSM2612515_200379120136_R04C01_Red.idat.gz"
[31] "./GSM2612516_200379120136_R05C01_Grn.idat.gz" "./GSM2612516_200379120136_R05C01_Red.idat.gz"
[33] "./GSM2612517_200379120136_R06C01_Grn.idat.gz" "./GSM2612517_200379120136_R06C01_Red.idat.gz"
[35] "./GSM2612518_200379120136_R01C02_Grn.idat.gz" "./GSM2612518_200379120136_R01C02_Red.idat.gz"
[37] "./GSM2612519_200379120136_R02C02_Grn.idat.gz" "./GSM2612519_200379120136_R02C02_Red.idat.gz"
[39] "./GSM2612520_200379120136_R03C02_Grn.idat.gz" "./GSM2612520_200379120136_R03C02_Red.idat.gz"
[41] "./GSM2612521_200379120136_R04C02_Grn.idat.gz" "./GSM2612521_200379120136_R04C02_Red.idat.gz"
[43] "./GSM2612522_200379120136_R05C02_Grn.idat.gz" "./GSM2612522_200379120136_R05C02_Red.idat.gz"
[45] "./GSM2612523_200379120136_R06C02_Grn.idat.gz" "./GSM2612523_200379120136_R06C02_Red.idat.gz"
[47] "./GSM2612524_200379120089_R01C01_Grn.idat.gz" "./GSM2612524_200379120089_R01C01_Red.idat.gz"
[49] "./GSM2612525_3998579182_R01C01_Grn.idat.gz" "./GSM2612525_3998579182_R01C01_Red.idat.gz"
[51] "./GSM2612526_3998579182_R02C01_Grn.idat.gz" "./GSM2612526_3998579182_R02C01_Red.idat.gz"
[53] "./GSM2612527_3998579182_R03C01_Grn.idat.gz" "./GSM2612527_3998579182_R03C01_Red.idat.gz"
[55] "./GSM2612528_3998579182_R04C01_Grn.idat.gz" "./GSM2612528_3998579182_R04C01_Red.idat.gz"
[57] "./GSM2612529_3998579182_R05C01_Grn.idat.gz" "./GSM2612529_3998579182_R05C01_Red.idat.gz"
[59] "./GSM2612530_3998579182_R06C01_Grn.idat.gz" "./GSM2612530_3998579182_R06C01_Red.idat.gz"
[61] "./GSM2612531_3998579182_R01C02_Grn.idat.gz" "./GSM2612531_3998579182_R01C02_Red.idat.gz"
[63] "./GSM2612532_3998579182_R02C02_Grn.idat.gz" "./GSM2612532_3998579182_R02C02_Red.idat.gz"
[65] "./GSM2612533_3998579182_R03C02_Grn.idat.gz" "./GSM2612533_3998579182_R03C02_Red.idat.gz"
[67] "./GSM2612534_3998579182_R04C02_Grn.idat.gz" "./GSM2612534_3998579182_R04C02_Red.idat.gz"
[69] "./GSM2612535_3998579182_R05C02_Grn.idat.gz" "./GSM2612535_3998579182_R05C02_Red.idat.gz"
[71] "./GSM2612536_3998579182_R06C02_Grn.idat.gz" "./GSM2612536_3998579182_R06C02_Red.idat.gz"
sampleNames(rgSet) <- sub(".*3", "3", sampleNames(rgSet))
Error in `rownames<-`(`*tmp*`, value = c("379120089_R02C01", "3C01", "379120089_R04C01", : duplicate rownames not allowed
Any help would be much appreciated
1 answer
It is your sub() command that produces non-unique names, which you then attempt to set as row names to your object rgSet.
NB - If you want to use the full stop in a function like sub(), then it's good practice to escape it like this: \\.
To maintain unique names, you need the GSM identifier. You could do this:
sampleNames(rgSet) <- sub("\\.\\/", "", sub("\\.idat\\.gz", "", sub("_[0-9]*_R", "_R", sampleNames(rgSet))))
sampleNames(rgSet)
[1] "GSM2612501_R02C01_Grn" "GSM2612501_R02C01_Red" "GSM2612502_R03C01_Grn"
[4] "GSM2612502_R03C01_Red" "GSM2612503_R04C01_Grn" "GSM2612503_R04C01_Red"
[7] "GSM2612504_R05C01_Grn" "GSM2612504_R05C01_Red" "GSM2612505_R06C01_Grn"
[10] "GSM2612505_R06C01_Red" "GSM2612506_R01C02_Grn" "GSM2612506_R01C02_Red"
[13] "GSM2612507_R02C02_Grn" "GSM2612507_R02C02_Red" "GSM2612508_R03C02_Grn"
[16] "GSM2612508_R03C02_Red" "GSM2612509_R04C02_Grn" "GSM2612509_R04C02_Red"
[19] "GSM2612510_R05C02_Grn" "GSM2612510_R05C02_Red" "GSM2612511_R06C02_Grn"
[22] "GSM2612511_R06C02_Red" "GSM2612512_R01C01_Grn" "GSM2612512_R01C01_Red"
[25] "GSM2612513_R02C01_Grn" "GSM2612513_R02C01_Red" "GSM2612514_R03C01_Grn"
[28] "GSM2612514_R03C01_Red" "GSM2612515_R04C01_Grn" "GSM2612515_R04C01_Red"
[31] "GSM2612516_R05C01_Grn" "GSM2612516_R05C01_Red" "GSM2612517_R06C01_Grn"
[34] "GSM2612517_R06C01_Red" "GSM2612518_R01C02_Grn" "GSM2612518_R01C02_Red"
[37] "GSM2612519_R02C02_Grn" "GSM2612519_R02C02_Red" "GSM2612520_R03C02_Grn"
[40] "GSM2612520_R03C02_Red" "GSM2612521_R04C02_Grn" "GSM2612521_R04C02_Red"
[43] "GSM2612522_R05C02_Grn" "GSM2612522_R05C02_Red" "GSM2612523_R06C02_Grn"
[46] "GSM2612523_R06C02_Red" "GSM2612524_R01C01_Grn" "GSM2612524_R01C01_Red"
[49] "GSM2612525_R01C01_Grn" "GSM2612525_R01C01_Red" "GSM2612526_R02C01_Grn"
[52] "GSM2612526_R02C01_Red" "GSM2612527_R03C01_Grn" "GSM2612527_R03C01_Red"
[55] "GSM2612528_R04C01_Grn" "GSM2612528_R04C01_Red" "GSM2612529_R05C01_Grn"
[58] "GSM2612529_R05C01_Red" "GSM2612530_R06C01_Grn" "GSM2612530_R06C01_Red"
[61] "GSM2612531_R01C02_Grn" "GSM2612531_R01C02_Red" "GSM2612532_R02C02_Grn"
[64] "GSM2612532_R02C02_Red" "GSM2612533_R03C02_Grn" "GSM2612533_R03C02_Red"
[67] "GSM2612534_R04C02_Grn" "GSM2612534_R04C02_Red" "GSM2612535_R05C02_Grn"
[70] "GSM2612535_R05C02_Red" "GSM2612536_R06C02_Grn" "GSM2612536_R06C02_Red"
> length(sampleNames(rgSet))
[1] 72
> length(unique(sampleNames(rgSet))
[1] 72
Log in to answer this question.