###################################################
### chunk number 1: 
###################################################
library(BufferedMatrix)


###################################################
### chunk number 2: 
###################################################
X <- createBufferedMatrix(10000)


###################################################
### chunk number 3: 
###################################################
X


###################################################
### chunk number 4: 
###################################################
AddColumn(X)
AddColumn(X)
X


###################################################
### chunk number 5: 
###################################################
X <- createBufferedMatrix(10000,2)


###################################################
### chunk number 6: 
###################################################
RowMode(X)


###################################################
### chunk number 7: 
###################################################
ColMode(X)


###################################################
### chunk number 8: 
###################################################
X <- createBufferedMatrix(10000,5,bufferrows=500,buffercols=1)


###################################################
### chunk number 9: 
###################################################
set.buffer.dim(X,100,2)


###################################################
### chunk number 10: 
###################################################
memory.usage(X)
disk.usage(X)
nrow(X)
ncol(X)
dim(X)
buffer.dim(X)
prefix(X)
directory(X)
is.RowMode(X)
is.ColMode(X)


###################################################
### chunk number 11: 
###################################################
ReadOnlyMode(X)
is.ReadOnlyMode(X)
ReadOnlyMode(X)
is.ReadOnlyMode(X)


###################################################
### chunk number 12: 
###################################################
X <- createBufferedMatrix(20,2)
X[1:20,] <- 1:40
B <- X[1:5,]
B
B[1:2,] <- B[1:2,]^2
B
X[1:5,]


###################################################
### chunk number 13: 
###################################################
X[1:5,] <- B
X[1:5,]


###################################################
### chunk number 14: 
###################################################
rownames(X)
colnames(X)
rownames(X) <- letters[1:20]
colnames(X) <- month.abb[1:2]


###################################################
### chunk number 15: 
###################################################
X[c("a","b"),"Jan"]
X["t",2] <- 0


###################################################
### chunk number 16: 
###################################################
X[rep(c(TRUE,FALSE),10),1]


###################################################
### chunk number 17: 
###################################################
Y <- subBufferedMatrix(X,1:5,1:2)
Y


###################################################
### chunk number 18: 
###################################################
X <- createBufferedMatrix(10,3)
X[1:10,] <- (1:30)^2
Max(X)
Min(X)
mean(X)
Sum(X)
Var(X)
Sd(X)


###################################################
### chunk number 19: 
###################################################
rowMeans(X)
colMeans(X)
rowSums(X)
colSums(X)
rowVars(X)
colVars(X)
rowSd(X)
colSd(X)
rowMax(X)
colMax(X)
rowMin(X)
colMin(X)


###################################################
### chunk number 20: 
###################################################
sum.cube.root <- function(x){
	sum(x^(1/3))
}
colApply(X,sum.cube.root)


###################################################
### chunk number 21: 
###################################################
sum.arbitrary.power <- function(x,power=2){
	sum(x^power)
}
rowApply(X,sum.arbitrary.power,power=3)


###################################################
### chunk number 22: 
###################################################
Y <- colApply(X,sort,decreasing=TRUE)
is(Y,"BufferedMatrix")


###################################################
### chunk number 23: 
###################################################
exp(X)
log(X)
sqrt(X)
pow(X,2.0)


###################################################
### chunk number 24: 
###################################################
my.function <- function(x){
  x^2 +3*abs(x) - 9
}
ewApply(X, my.function)


###################################################
### chunk number 25: 
###################################################
Z <- as(X,"matrix")
class(Z)


###################################################
### chunk number 26: 
###################################################
A <- as(Z,"BufferedMatrix")
class(A)


###################################################
### chunk number 27: 
###################################################
X <- createBufferedMatrix(50,10)
X[1:50,] <- 1:500
Y <- as(X,"matrix")

my.function <- function(a.matrix){
  a.matrix[,1:10] <- a.matrix[,sample(1:10,10)] 
}

X[1:5,]
my.function(X)
X[1:5,]

Y[1:5,]
my.function(Y)
Y[1:5,]


###################################################
### chunk number 28: 
###################################################
X <- createBufferedMatrix(50,10)
X[1:50,] <- 1:500
my.function <- function(my.bufmat){
  internal.bufmat <- duplicate(my.bufmat)
  internal.bufmat[,1:10] <- internal.bufmat[,sample(1:10,10)] 
}


X[1:5,]
my.function(X)
X[1:5,]


