Rsamtools manual suggests how to handle big bam files (section 2.1 Large bam files). Basically, you can use which option for in ScanBamParam to limit the loaded regions. From here, you can use something like this to load one whole chromosome at the time:
loadChr <- function(seqname, bamFile)
bamInfo<-seqinfo(BamFile(bamFile)) # read reference names and their lengths lenthgs
afrom<-1 # start of a region to extract
ato<-seqlengths(bamInfo[seqname]) # end of a region to extract
param <- ScanBamParam(what=scanBamWhat(),
which=GRanges(seqname, IRanges(afrom, ato)),
flag=scanBamFlag(isUnmappedQuery=FALSE)) # set parameters for loading
x <- scanBam(file = bamFile, param=param)[] # load bam with region limits
seqnames <- "chrX"
bam <- lapply(seqnames, loadChr, "in.bam")
I am not aware of a simple way to directly export BAM using Rsamtools, though. You can read BAM header by scanBamHeader and then somehow merge it with the rest, export as SAM and then convert it to BAM with asBam (both from Rsamtools).