text: user2005: I have a list of gene symbols:
  c("cd45", "Tmem119", "CD11b", "P2Yr12", "Csf1r", "Bst2", "Cd74", 
  "Cx3cr1", "Trem2", "Lyz2", "GLAST", "GFAP", "ALDH1L1", "Aldoc", "Aqp4", 
  "Glul", "S100a", "Olig1", "Olig2", "Olig3", "Mbp", "Pdgfra", "Pecam", 
  "Cldn5", "Cldn10", "Epas1", "Crip1")
  
  If I feed it to BioMart to get ensembl ids:
  mart <- useDataset("mmusculus_gene_ensembl", useMart("ensembl"))
  list <- getBM(filters= "mgi_symbol", attributes= c("ensembl_gene_id",
                             "mgi_symbol","description"),values=symbols,mart= mart)
  
  the following genes are missed:
  "cd45"   "cd11b"  "p2yr12" "glast"  "s100a"  "pecam" 
  
  All of them are pretty well-known genes, and I can manually find their ensembl ids by googling it, for instance:
  http://www.informatics.jax.org/marker/MGI:97810
  I tried supplying aliases, but it does not change the output. So, from my understanding BioMart is not working properly either because I am doing something wrong here or because BioMart itself is not a good tool to use. Is there a better way of getting the mapping that would map all of the gene symbols?
  
  user939: The genes that are missed are probably not official mgi symbols.
  You might wanna look them up at mgi:
  cd45 -> Ptprc 
  
  cd11b -> Itgam 
  
  p2ry12 -> P2ry12 (?) (CAPS sensitive?)    
  
  glast -> Slc1a3 
  
  s100a -> S100a1 
  
  pecam -> Pecam1 (?)
  
  I suspect biomaRt is not the problem here, the only better way I can come up with is to download the ENSEMBL annotation (GTF) file, and get the symbol out of this annotation with AWK or in R.
  Here an example in R, since you don't want to use AWK:
  file <- read.table("Mus_musculus.GRCm38.78.gtf", sep = "\t", comment.char = "#")
  
  exons <- subset(file, V3 == 'exon')
  
  V9 <- file[,"V9"]
  
  ensembl_names <- sub("gene_id ","",V9)
  
  split <- strsplit(ensembl_names, ";")
  
  splitting <- sapply(split, function(x) x[1])
  
  split_symbol <- strsplit(ensembl_names, "gene_name ")
  
  splitting_symbol <- sapply(split_symbol, function(x) x[2])
  
  splitting_symbol2 <- strsplit(splitting_symbol, "; ")
  
  symbol_names <- sapply(splitting_symbol2, function(x) x[1])
  
  ensemble_symbol_big <- cbind(splitting, symbol_names)
  
  ensembl_symbol <- unique(ensemble_symbol_big)
  
  colnames(ensembl_symbol) <- c("ENSEMBL", "Symbol")
  
  write.table(ensembl_symbol, "ensembl_symbol.txt", sep = "\t", row.names = F)
  
  
original_text: 2005: <p>I have a list of gene symbols:</p>
  
  <pre><code>c("cd45", "Tmem119", "CD11b", "P2Yr12", "Csf1r", "Bst2", "Cd74", 
  "Cx3cr1", "Trem2", "Lyz2", "GLAST", "GFAP", "ALDH1L1", "Aldoc", "Aqp4", 
  "Glul", "S100a", "Olig1", "Olig2", "Olig3", "Mbp", "Pdgfra", "Pecam", 
  "Cldn5", "Cldn10", "Epas1", "Crip1")
  </code></pre>
  
  <p>If I feed it to <code>BioMart</code> to get <code>ensembl ids</code>:</p>
  
  <pre><code>mart &lt;- useDataset("mmusculus_gene_ensembl", useMart("ensembl"))
  list &lt;- getBM(filters= "mgi_symbol", attributes= c("ensembl_gene_id",
                             "mgi_symbol","description"),values=symbols,mart= mart)
  </code></pre>
  
  <p>the following genes are missed:</p>
  
  <pre><code>"cd45"   "cd11b"  "p2yr12" "glast"  "s100a"  "pecam" 
  </code></pre>
  
  <p>All of them are pretty well-known genes, and I can manually find their <code>ensembl ids</code> by googling it, for instance:</p>
  
  <p><a href="http://www.informatics.jax.org/marker/MGI:97810" rel="nofollow noreferrer">http://www.informatics.jax.org/marker/MGI:97810</a></p>
  
  <p>I tried supplying aliases, but it does not change the output. So, from my understanding <code>BioMart</code> is not working properly either because I am doing something wrong here or because <code>BioMart</code> itself is not a good tool to use. Is there a better way of getting the mapping that would map all of the gene symbols?</p>
   939: <p>The genes that are missed are probably not official mgi symbols.</p>
  
  <p>You might wanna look them up at mgi:</p>
  
  <pre><code>cd45 -&gt; Ptprc 
  
  cd11b -&gt; Itgam 
  
  p2ry12 -&gt; P2ry12 (?) (CAPS sensitive?)    
  
  glast -&gt; Slc1a3 
  
  s100a -&gt; S100a1 
  
  pecam -&gt; Pecam1 (?)
  </code></pre>
  
  <p>I suspect biomaRt is not the problem here, the only better way I can come up with is to download the ENSEMBL annotation (GTF) <a href="ftp://ftp.ensembl.org/pub/release-92/gtf/mus_musculus" rel="nofollow noreferrer">file</a>, and get the symbol out of this annotation with AWK or in R.</p>
  
  <p>Here an example in R, since you don't want to use AWK:</p>
  
  <pre><code>file &lt;- read.table("Mus_musculus.GRCm38.78.gtf", sep = "\t", comment.char = "#")
  
  exons &lt;- subset(file, V3 == 'exon')
  
  V9 &lt;- file[,"V9"]
  
  ensembl_names &lt;- sub("gene_id ","",V9)
  
  split &lt;- strsplit(ensembl_names, ";")
  
  splitting &lt;- sapply(split, function(x) x[1])
  
  split_symbol &lt;- strsplit(ensembl_names, "gene_name ")
  
  splitting_symbol &lt;- sapply(split_symbol, function(x) x[2])
  
  splitting_symbol2 &lt;- strsplit(splitting_symbol, "; ")
  
  symbol_names &lt;- sapply(splitting_symbol2, function(x) x[1])
  
  ensemble_symbol_big &lt;- cbind(splitting, symbol_names)
  
  ensembl_symbol &lt;- unique(ensemble_symbol_big)
  
  colnames(ensembl_symbol) &lt;- c("ENSEMBL", "Symbol")
  
  write.table(ensembl_symbol, "ensembl_symbol.txt", sep = "\t", row.names = F)
  </code></pre>
  