89 lines
2.8 KiB
R
Raw Normal View History

2025-01-12 00:52:51 +08:00
## ----install, eval=FALSE------------------------------------------------------
# if (!require("BiocManager"))
# install.packages("BiocManager")
# BiocManager::install("S4Vectors")
## ----message=FALSE------------------------------------------------------------
library(S4Vectors)
## ----Rle-extends-Vector-------------------------------------------------------
showClass("Rle")
## ----initialize---------------------------------------------------------------
set.seed(0)
lambda <- c(rep(0.001, 4500), seq(0.001, 10, length=500),
seq(10, 0.001, length=500))
xVector <- rpois(1e7, lambda)
yVector <- rpois(1e7, lambda[c(251:length(lambda), 1:250)])
xRle <- Rle(xVector)
yRle <- Rle(yVector)
## ----basic-ops----------------------------------------------------------------
length(xRle)
xRle[1]
zRle <- c(xRle, yRle)
## ----seq-extraction-----------------------------------------------------------
xSnippet <- window(xRle, 4751, 4760)
xSnippet
head(xSnippet)
tail(xSnippet)
rev(xSnippet)
rep(xSnippet, 2)
subset(xSnippet, xSnippet >= 5L)
## ----seq-concatenate----------------------------------------------------------
c(xSnippet, rev(xSnippet))
append(xSnippet, xSnippet, after=3)
## ----aggregate----------------------------------------------------------------
xSnippet
aggregate(xSnippet, start=1:8, width=3, FUN=median)
## ----shiftApply-cor-----------------------------------------------------------
cor(xRle, yRle)
shifts <- seq(235, 265, by=3)
corrs <- shiftApply(shifts, yRle, xRle, FUN=cor)
## ----figshiftcorrs, eps=FALSE, fig.align='center', fig.cap='Correlation between `xRle` and `yRle` for various shifts'----
plot(shifts, corrs)
## ----Rle-vector-compare-------------------------------------------------------
as.vector(object.size(xRle) / object.size(xVector))
identical(as.vector(xRle), xVector)
## ----Rle-accessors------------------------------------------------------------
head(runValue(xRle))
head(runLength(xRle))
## ----Rle-ops------------------------------------------------------------------
xRle > 0
xRle + yRle
xRle > 0 | yRle > 0
## ----Rle-summary--------------------------------------------------------------
range(xRle)
sum(xRle > 0 | yRle > 0)
## ----Rle-math-----------------------------------------------------------------
log1p(xRle)
## ----Rle-cor------------------------------------------------------------------
cor(xRle, yRle)
shiftApply(249:251, yRle, xRle,
FUN=function(x, y) {var(x, y) / (sd(x) * sd(y))})
## ----DataFrame-extends-List---------------------------------------------------
showClass("DataFrame")
## ----DataFrame, warning=FALSE-------------------------------------------------
df <- DataFrame(x=xRle, y=yRle)
sapply(df, class)
sapply(df, summary)
sapply(as.data.frame(df), summary)
endoapply(df, `+`, 0.5)
## ----SessionInfo, echo=FALSE--------------------------------------------------
sessionInfo()