Yes, I would grab the names of markers/pseudomarkers in the interval of interest and use those to grab the portion of the scan1 output.
The function
find_marker has an argument
interval that you can use to pull out the names of markers within a genomic interval.
Here's an example:
library(qtl2)
iron <- read_cross2(system.file("extdata", "iron.zip", package="qtl2"))
# insert pseudomarkers every 1 cM
gmap <- insert_pseudomarkers(iron$gmap, step=1)
# find corresponding physical locations
pmap <- interp_map(gmap, iron$gmap, iron$pmap)
# genome scan
probs <- calc_genoprob(iron, gmap, error_prob=0.002)
covar <- match(iron$covar$sex, c("f", "m")) # make numeric
names(covar) <- rownames(iron$covar)
Xcovar <- get_x_covar(iron)
out <- scan1(probs, pheno, addcovar=covar, Xcovar=Xcovar)
# lod interval for "spleen" phenotype on chr 9
lodint_c9 <- lod_int(out, pmap, lodcolumn="spleen", chr=9)
# find corresponding marker positions, adding 1 Mbp on each end
interval <- lodint_c9[c(1,3)] + c(-1, 1)
markers_in_interval <- find_marker(pmap, 9, interval=interval)
# pull out that part of lod scores
out[markers_in_interval,]
karl