This is the answer, so why not drop it as an answer below, just for posterity sake.
I am getting a strange error converting Gene Symbols to Entrez ID. Here is my code:
testData = read.delim("IL_CellVar.txt",head=T,row.names = 2)
testData[1:5,1:3]
ClustID Genes.Symbol ChrLoc
NM_001034168.1 4 Ank2 chrNA:-1--1
NM_013795.4 4 Atp5l chrNA:-1--1
NM_018770 4 Igsf4a chrNA:-1--1
NM_146150.2 4 Nrd1 chrNA:-1--1
NM_134065.3 4 Epdr1 chrNA:-1--1
clustNum = 5
filteredClust = testData[testData$ClustID == clustNum,]
anyis.na(filteredClust$Genes.Symbol))
[1] FALSE
selectedEntrezIds <- unlist(mget(filteredClust$Genes.Symbol,org.Mm.egSYMBOL2EG))
Error in unlist(mget(filteredClust$Genes.Symbol, org.Mm.egSYMBOL2EG)) : error in evaluating the argument 'x' in selecting a method for function 'unlist': Error in .checkKeysAreWellFormed(keys) : keys must be supplied in a character vector with no NAs
Another approach fails too:
selectedEntrezIds = select(org.Mm.eg.db,filteredClust$Genes.Symbol, "ENTREZID")
Error in .select(x, keys, columns, keytype = extraArgs[["kt"]], jointype = jointype) : 'keys' must be a character vector
Just for the sake or error, removing 'NA', doesn't help:
a <- filteredClust$Genes.Symbol[!is.na(filteredClust$Genes.Symbol)]
selectedEntrezIds <- unlist(mget(a,org.Mm.egSYMBOL2EG))
Error in unlist(mget(a, org.Mm.egSYMBOL2EG)) : error in evaluating the argument 'x' in selecting a method for function 'unlist': Error in .checkKeysAreWellFormed(keys) : keys must be supplied in a character vector with no NAs
I am not sure why I am getting this error as the master file from which gene symbols were extracted for testData gives no problem while converting to EntrezID. Would appreciate help on this.
Thanks
AK
1 answer
Th answer is in the error itself. Keys must be character vector. Try this,
selectedEntrezIds <- unlist(mget(as.character(a),org.Mm.egSYMBOL2EG))
Log in to answer this question.
Is it just me or there really is a problem beginning right at the 4th line of code? You are assigning 5 to clustNum. Then you are checking if testData$ClustID is equal to clustNum which is 5. But testData$ClustID are NCBI accessions. This is not making any sense to me.
Just guessing, but I think the RefSeq accessions are actually rownames.
Damn! You are right.