This is a test version of Biostars. For the public version, visit https://www.biostars.org.
How to overcome "duplicate row.names" error while importing tpm/count/fpkm matrix/table in R ?

HI,

I used RSEM to produce TPM matrix for 100 RNA seq reads (row names= gene, columns are cell number) I get the following error, can anyone help me please!

> all <-read.table(file="tpm_matrix.xls",header=T)
Error in read.table(file = "tpm_matrix.xls", header = T) : 
  duplicate 'row.names' are not allowed

I changed the format of row names from "gene10000_Ermap" to "Ermap".

r software error rna-seq rna-seq

If your file is rather a text file but no MS xls, you can use cut -f 1 tpm_matrix.xls | sort | uniq -c | sort -k1,1nr to find the duplicated row names. If there are only a few, you'll curate that manually; if you have a lot, you can use e.g. awk to add a consecutive number to the name.

This helped, Thank you so much

1 answer

library(gdata)
data.in <- read.xls("tpm_matrix.xls")

read.table is trying to create a matrix, and as you've observed duplicate row names aren't allowed. You can get around this by importing it as a data frame.

Disclaimer: Untested, and probably a Tidyverse way to do it now instead of openxlsx...

Hi, Thanks but I get the following error!

data.in <- read.xlsx("tpm_matrix.xlsx")
Error in file(con, "r") : invalid 'description' argument
In addition: Warning message:
In unzip(xlsxFile, exdir = xmlDir) : error 1 in extracting from zip file

I've edited my OP - assumed it was an xlsx file, not xls... my bad.

tidyverse way is to use readxl. See here

Log in to answer this question.