... The genes function basically takes the furthest extent of all transcripts for a particular gene, and returns that. This works really well for the vast majority of all genes, but fails in two notable instances. First, when the gene is found on more than one chromosome (or unplaced scaffold thereof), ...
... It's just as one might imagine:
> lst <- list(IRanges(3,5), IRanges(4,5), IRanges(3,6))
IRanges object with 1 range and 0 metadata columns:
start end width
<integer> <integer> <integer>
 3 5 3
... You didn't need to do that at all. You just need to start R in the directory that contains your celfiles and do
dat <- read.celfiles(list.celfiles())
eset <- rma(dat)
If you then want to add annotations (and who doesn't?), you could use my affycoretools package
... You are doing several things wrong, most of which involve fighting the existing infrastructure that is intended to make your life easier.
The data you download are in ExpressionSets, which are fancy ways to encapsulate data in such a way that you can pretend as if they are data.frames that you can ...
> getBM(c("start_position","end_position","strand"), "ensembl_gene_id", "ENSG00000114127", mart.hs)
start_position end_position strand
1 142306607 142448062 -1
> region2 <- "3:141895564:142895564:-1"
> getBM(attributes = "ensembl_gene_id", filters = "chromosomal_region", ...