From 3158f5f0a5816902c7ab28d5730d3df5d8e4d486 Mon Sep 17 00:00:00 2001 From: kaneplusplus Date: Fri, 20 Dec 2019 11:20:19 -0500 Subject: [PATCH] Update based on Kurt's email. --- DESCRIPTION | 6 +- R/bigmemory.R | 8 +- inst/doc/Overview.R | 78 ------ inst/doc/Overview.Rnw | 409 ----------------------------- inst/doc/Overview.pdf | Bin 158790 -> 0 bytes man/as.big.matrix-methods.Rd | 6 +- man/as.matrix-big.matrix-method.Rd | 1 - man/attach.big.matrix.Rd | 21 +- man/big.matrix-class.Rd | 54 ++-- man/big.matrix.Rd | 178 +++++++------ man/big.matrix.descriptor-class.Rd | 22 +- man/deepcopy.Rd | 19 +- man/dim-big.matrix-method.Rd | 1 - man/extract-methods.Rd | 1 + man/flush-methods.Rd | 8 +- man/is.float-numeric-method.Rd | 1 - man/length-big.matrix-method.Rd | 1 - man/morder.Rd | 37 ++- man/mwhich-methods.Rd | 22 +- man/mwhich.Rd | 50 ++-- man/print-big.matrix-method.Rd | 1 - man/sub.big.matrix.Rd | 29 +- man/typeof-big.matrix-method.Rd | 1 - man/write.big.matrix.Rd | 92 ++++--- src/symbols.rds | Bin 17920 -> 0 bytes vignettes/Overview.Rnw | 409 ----------------------------- 26 files changed, 311 insertions(+), 1144 deletions(-) delete mode 100644 inst/doc/Overview.R delete mode 100644 inst/doc/Overview.Rnw delete mode 100644 inst/doc/Overview.pdf delete mode 100644 src/symbols.rds delete mode 100644 vignettes/Overview.Rnw diff --git a/DESCRIPTION b/DESCRIPTION index aed15fb..920030b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,5 +1,5 @@ Package: bigmemory -Version: 4.5.33 +Version: 4.5.35 Title: Manage Massive Matrices with Shared Memory and Memory-Mapped Files Author: Michael J. Kane , John W. Emerson , Peter Haverty , and Charles @@ -24,9 +24,7 @@ URL: https://github.com/kaneplusplus/bigmemory BugReports: https://github.com/kaneplusplus/bigmemory/issues LazyLoad: yes Biarch: yes -VignetteBuilder: knitr Suggests: - knitr, testthat -RoxygenNote: 6.0.1 +RoxygenNote: 7.0.2 Roxygen: list(markdown = TRUE) diff --git a/R/bigmemory.R b/R/bigmemory.R index 51a4034..0971c93 100644 --- a/R/bigmemory.R +++ b/R/bigmemory.R @@ -1941,7 +1941,7 @@ morder <- function(x, cols, na.last=TRUE, decreasing = FALSE) { stop("Bad column indices.") } - switch(class(x), + switch(class(x)[1], "big.matrix"=OrderBigMatrix(x@address, as.double(cols), as.integer(na.last), as.logical(decreasing) ), "matrix" = switch(typeof(x), @@ -1965,7 +1965,7 @@ morderCols <- function(x, rows, na.last=TRUE, decreasing = FALSE) { stop("Bad row indices.") } - switch(class(x), + switch(class(x)[1], "big.matrix"=OrderBigMatrixCols(x@address, as.double(rows), as.integer(na.last), as.logical(decreasing) ), @@ -2012,7 +2012,7 @@ mpermute <- function(x, order=NULL, cols=NULL, allow.duplicates=FALSE, ...) order <- morder(x, cols, ...) } - switch(class(x), + switch(class(x)[1], "big.matrix" = ReorderBigMatrix(x@address, order), "matrix" = switch(typeof(x), 'integer' = ReorderRIntMatrix(x, nrow(x), ncol(x), order), @@ -2053,7 +2053,7 @@ mpermuteCols <- function(x, order=NULL, rows=NULL, order <- morderCols(x, rows, ...) } - switch(class(x), + switch(class(x)[1], "big.matrix" = { ReorderBigMatrixCols(x@address, order) SetColumnNames(x@address, colnames(x)[order]) diff --git a/inst/doc/Overview.R b/inst/doc/Overview.R deleted file mode 100644 index 4ca182d..0000000 --- a/inst/doc/Overview.R +++ /dev/null @@ -1,78 +0,0 @@ -## ----include=FALSE------------------------------------------------------- -library(knitr) -opts_chunk$set( -fig.path='graphics/stat' -) - -## ----setup,include=FALSE,echo=FALSE-------------------------------------- -options(keep.source = TRUE, width = 75) - -## ----read, eval = FALSE-------------------------------------------------- -# library(bigmemory) -# library(biganalytics) -# x <- read.big.matrix("airline.csv", type="integer", header=TRUE, -# backingfile="airline.bin", -# descriptorfile="airline.desc", -# extraCols="Age") -# summary(x) -# -# # min max mean NA's -# #Year 1987 2008 1998.62 0 -# #Month 1 12 6.55 0 -# #DayofMonth 1 31 15.72 0 -# #DayOfWeek 1 7 3.94 0 -# #ArrDelay -1437 2598 7.05 2587529 -# #DepDelay -1410 2601 8.17 2302136 -# #... (other variables omitted here) ... - -## ----birth, eval = FALSE------------------------------------------------- -# birthmonth <- function(y) { -# minYear <- min(y[,'Year'], na.rm=TRUE) -# these <- which(y[,'Year']==minYear) -# minMonth <- min(y[these,'Month'], na.rm=TRUE) -# return(12*minYear + minMonth - 1) -# } - -## ----run_birth, eval = FALSE--------------------------------------------- -# allplanes <- unique(x[,'TailNum']) -# planeStart <- rep(0, length(allplanes)) -# for (i in allplanes) { -# planeStart[i] <- birthmonth( x[mwhich(x, 'TailNum', i, 'eq'), -# c('Year', 'Month'), drop=FALSE] ) -# } - -## ----bigsplit, eval = FALSE---------------------------------------------- -# library(bigtabulate) -# planeindices <- bigsplit(x, 'TailNum') - -## ----split, eval = FALSE------------------------------------------------- -# planeindices <- split(1:nrow(x), x[,'TailNum']) - -## ----sapply, eval = FALSE------------------------------------------------ -# planeStart <- sapply(planeindices, -# function(i) birthmonth(x[i, c('Year','Month'), -# drop=FALSE])) - -## ----parallel, eval = FALSE---------------------------------------------- -# library(doMC) -# registerDoMC(cores=2) -# planeStart <- foreach(i=planeindices, .combine=c) %dopar% { -# return(birthmonth(x[i, c('Year','Month'), drop=FALSE])) -# } - -## ----ages, eval = FALSE-------------------------------------------------- -# x[,'Age'] <- x[,'Year']*as.integer(12) + -# x[,'Month'] - as.integer(planeStart[x[,'TailNum']]) - -## ----biglm, eval = FALSE------------------------------------------------- -# blm <- biglm.big.matrix(ArrDelay ~ Age + Year, data=x) -# summary(blm) - -## ----biglm_output, eval = FALSE------------------------------------------ -# #Large data regression model: biglm(formula = formula, data = data, ...) -# #Sample size = 84216580 -# # Coef (95% CI) SE p -# #(Intercept) 91.6149 87.6509 95.5789 1.9820 0 -# #Age 0.0144 0.0142 0.0146 0.0001 0 -# #Year -0.0424 -0.0444 -0.0404 0.0010 0 - diff --git a/inst/doc/Overview.Rnw b/inst/doc/Overview.Rnw deleted file mode 100644 index 39ce880..0000000 --- a/inst/doc/Overview.Rnw +++ /dev/null @@ -1,409 +0,0 @@ -% \VignetteIndexEntry{The Bigmemory Project Overview} -% \VignetteDepends{bigmemory} -% \VignettePackage{bigmemory} -% \VignetteEngine{knitr::knitr} -\documentclass[12pt]{article} - -\usepackage{graphics} -\usepackage{graphicx} - -\usepackage{accents} - -% New from euler: -\usepackage{ae} -\usepackage{color} -\usepackage{url} - -\topmargin=-0.85in -\textheight=9.5in -\textwidth=6.5in -\oddsidemargin=0in -%-0.25in - -%\usepackage{CJK} -%\usepackage{pinyin} -\def\E{\mathord{I\kern-.35em E}} -\def\R{\mathord{I\kern-.35em R}} -\def\P{\mathord{I\kern-.35em P}} -\def\I{\mathord{1\kern-.35em 1}} -\def\wt{\mathord{\widehat{\theta}}} - -\newcommand{\proglang}[1]{\textbf{#1}} -\newcommand{\pkg}[1]{\texttt{\textsl{#1}}} -\newcommand{\code}[1]{\texttt{#1}} -\newcommand{\mg}[1]{{\textcolor {magenta} {#1}}} -\newcommand{\gr}[1]{{\textcolor {green} {#1}}} -\newcommand{\bl}[1]{{\textcolor {blue} {#1}}} - -\newtheorem{thm}{Theorem}[section] -\newtheorem{myexplore}[thm]{Explore} -\newtheorem{mybackground}[thm]{Background} -\newtheorem{myquestion}[thm]{Question} -\newtheorem{myexample}[thm]{Example} -\newtheorem{mydefinition}[thm]{Definition} -\newtheorem{mytheorem}[thm]{Theorem} - -%\pagestyle{myheadings} % Go for customized headings -%\markboth{notused left title}{John W. Emerson, Department of Statistics, Yale University \copyright 2009} -%\newcommand{\sekshun}[1] % In 'article' only the page -% { % number appears in the header. -% \section{#1} % I want the section name AND -% \markboth{#1 \hfill}{#1 \hfill} % the page, so I need a new kind -% } % of '\sekshun' command. - -\begin{document} - -\setkeys{Gin}{width=1.0\textwidth} - -<>= -library(knitr) -opts_chunk$set( -fig.path='graphics/stat' -) -@ - - -<>= -options(keep.source = TRUE, width = 75) -@ - -\begin{center} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -{\Large\bf The Bigmemory Project} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\vspace*{0.5cm} -{\bf Michael J. Kane and John W. Emerson\\ -Yale University\\ -April 29, 2010} - -\vspace*{0.25cm} - -\end{center} - -%\begin{raggedright} -\parindent=0.5in - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\begin{quotation} -Multi-gigabyte data sets often challenge and frustrate \proglang{R} -users. \proglang{C/C++} programming can provide efficiencies, -but is cumbersome for interactive data analysis and -lacks the flexibility and power of \proglang{R}'s rich statistical -programming environment. The package \pkg{bigmemory} and sister -packages \pkg{biganalytics}, \pkg{synchronicity}, \pkg{bigtabulate}, -and \pkg{bigalgebra} bridge this gap, implementing massive matrices -and supporting their manipulation and exploration. -The data structures may be allocated to shared memory, allowing separate -processes on the same computer to share access to a single copy of the -data set. The data structures may also be file-backed, allowing users -to easily manage and analyze data sets larger than available RAM and -share them across nodes of a cluster. -These features of the Bigmemory Project open the door for powerful and -memory-efficient parallel analyses and data mining of massive data sets, -even on modest hardware. -\end{quotation} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\vspace*{0.5cm} -\noindent -{\bf Introductory Example: the 2009 JSM Data Expo} -\vspace*{0.5cm} - -Consider the complete airline on-time performance data -from the 2009 JSM Data Expo. The processed data set, \texttt{airline.csv}, -is approximately 11 GB (about 120 million rows and 29 columns) -with factors coded as integers (see \url{http://www.bigmemory.org/} for -processing information). -The \texttt{read.big.matrix()} call creates the binary -file-backing \texttt{airline.bin} -associated with the \texttt{big.matrix} object \texttt{x}. -Subsequent \proglang{R} sessions can attach instantly to \texttt{airline.bin} -without incurring the one-time overhead (about 25 minutes) -associated with creating the backing. -A summary of the entire data set is easily obtained using the new -\texttt{summary()} method. Note the surprising -presence of negative arrival and departure delays: exploratory data analysis -in action via \pkg{bigmemory}. The summary -only takes 3-4 minutes to process the 11 GB of data on a laptop with only -4 GB of RAM. -<>= -library(bigmemory) -library(biganalytics) -x <- read.big.matrix("airline.csv", type="integer", header=TRUE, - backingfile="airline.bin", - descriptorfile="airline.desc", - extraCols="Age") -summary(x) - -# min max mean NA's -#Year 1987 2008 1998.62 0 -#Month 1 12 6.55 0 -#DayofMonth 1 31 15.72 0 -#DayOfWeek 1 7 3.94 0 -#ArrDelay -1437 2598 7.05 2587529 -#DepDelay -1410 2601 8.17 2302136 -#... (other variables omitted here) ... -@ - - -\noindent -{\bf Overview} -\vspace*{0.5cm} - -Data frames and matrices in \proglang{R} are easy to use, -with typical manipulations executing quickly on -data sets much smaller than available RAM. They suit the needs of many -\proglang{R} users and work seamlessly with existing \proglang{R} functions -and packages. However, problems arise with larger data sets and when -increased memory requirements of parallel programming strain the system. - -The Bigmemory Project offers packages -for two purposes. First, \pkg{bigmemory}, \pkg{biganalytics}, and -\pkg{bigtabulate} have been designed to provide a minimalist, -elegant framework for users to manage and explore large data sets, even -on modest hardware (expensive workstations or clusters are not required). -The interface is designed to mimic \proglang{R}'s familiar \code{matrix} -syntax. Matthew Keller, Assistant Professor of -Psychology, University of Colorado at Boulder offered the following -testimonial about \pkg{bigmemory}: ``I love that it's intuitive and -doesn't require a lot of learning new ways to code things.'' - -Second, the packages of the Bigmemory Project provide a foundation for -memory-efficient parallel programming and can serve as building blocks -for developers of new high-performance computing tools in \proglang{R}. -When used in conjunction with a parallel package (such as \pkg{foreach}, -\pkg{snow}, \pkg{Rmpi}, or \pkg{multicore}, for example), -even shared-memory parallel-computing becomes -accessible to non-experts. -The programming interface is stable, and offers the flexibility to support -the development of -algorithms working seamlessly on both \texttt{big.matrix} and traditional -\texttt{matrix} objects. For examples of this, look first -at the function \texttt{mwhich()}; it offers flexible \texttt{which()}-like -functionality that is computationally efficient and avoids memory overhead. -In addition, all the functions provided by \pkg{bigtabulate} may be used -with \texttt{matrix} and \texttt{big.matrix} objects alike. - -\vspace*{0.5cm} -\noindent -{\bf Underneath the Hood of the Bigmemory Project} -\vspace*{0.5cm} - -The packages of the Bigmemory Project use the Boost Interprocess -\proglang{C++} library to provide platform-independent support for -massive matrices that may be shared across \proglang{R} processes. -Innovative use of \proglang{C++} accessors supports matrices of -\texttt{double}, \texttt{integer}, \texttt{short}, and \texttt{char}, -as well as the development of algorithms working seamlessly on -\texttt{big.matrix} objects or traditional \proglang{R} matrices. - -\vspace*{0.5cm} -\noindent -{\bf Example: Airplane Ages and Parallel Processing} -\vspace*{0.5cm} - -We would like to approximate the age of each plane at the time of -each flight. This first requires calculation of an approximate -``birthmonth'' for each plane: the month of the first -appearance in the data set. Given a matrix -\texttt{y} containing \texttt{Year} and \code{Month} for all flights -of a given plane, \texttt{birthmonth(y)} returns the -month (in months AD) of the earliest flight: -<>= -birthmonth <- function(y) { - minYear <- min(y[,'Year'], na.rm=TRUE) - these <- which(y[,'Year']==minYear) - minMonth <- min(y[these,'Month'], na.rm=TRUE) - return(12*minYear + minMonth - 1) -} -@ -A traditional approach to calculating all the birthmonths might use a \code{for()} loop: -<>= -allplanes <- unique(x[,'TailNum']) -planeStart <- rep(0, length(allplanes)) -for (i in allplanes) { - planeStart[i] <- birthmonth( x[mwhich(x, 'TailNum', i, 'eq'), - c('Year', 'Month'), drop=FALSE] ) -} -@ -With about 13,000 flights this takes about 9 hours, even with the relative -fast and memory-efficient use of \texttt{mwhich()}. - -A far more efficient alternative is to first obtain a list of row indices -for each plane: -<>= -library(bigtabulate) -planeindices <- bigsplit(x, 'TailNum') -@ -Here, the use of the new function \code{bigsplit()} is equivalent to -<>= -planeindices <- split(1:nrow(x), x[,'TailNum']) -@ -but is faster (16 versus 29 seconds) and more memory efficient (with -peak memory usage of 2 versus 3 GB). -Either way, -\texttt{planeindices[i]} contains all row indices corresponding to flights -with \texttt{TailNum} equal to \texttt{i}. This requires several hundred MB, -but is computationally more efficient in this problem. For example, -\texttt{planeindices} may be used with \code{sapply()} in the obvious way, -completing the task in a mere 30 seconds: -<>= -planeStart <- sapply(planeindices, - function(i) birthmonth(x[i, c('Year','Month'), - drop=FALSE])) -@ - -The looping structure \texttt{foreach()} of package \pkg{foreach} -can be a powerful and flexible alternative to \texttt{for()} or -functions like -\texttt{lapply()} and \texttt{sapply()}. It can also -take advantage of the shared-memory -capability of \pkg{bigmemory}. Package \pkg{doMC} provides one of several -available ``parallel backends'' for the function \texttt{foreach()}, allowing -the work to be automatically distributed to available processor cores: -<>= -library(doMC) -registerDoMC(cores=2) -planeStart <- foreach(i=planeindices, .combine=c) %dopar% { - return(birthmonth(x[i, c('Year','Month'), drop=FALSE])) -} -@ -The syntax of a \code{foreach()} loop is slightly different from the -syntax of a traditional loop, but its benefits are clear: -in this example, it takes only 14 seconds -to calculate the plane birthmonths using two processor cores.\footnote{We -should note that \pkg{doMC} and \pkg{multicore} are particularly well-suited -for this. When other parallel backends are used, one additional command is -required in the \code{birthmonth()} function: \code{x <- attach.big.matrix(xdesc)} -where \code{xdesc <- describe(x)} would be required just prior to the -\code{foreach()} loop, providing explicit shared-memory access across processes. -In contrast, \code{multicore} automatically operates on shared memory, -avoiding the need for this extra step.} -Both cores share access to the same master copy -of the airline data (with \texttt{Year} and \texttt{Month} cached in RAM); -individual calls to \texttt{birthmonth()} are relatively small in size. -Without the \texttt{registerDoMC()} -initialization, the \code{foreach()} loop would run on a single processor core, much -like \code{sapply()}, but taking about 24 seconds in this problem -with lower memory overhead than \code{sapply()}. - -Finally, the plane ages at the time of all flights may be calculated: -<>= -x[,'Age'] <- x[,'Year']*as.integer(12) + - x[,'Month'] - as.integer(planeStart[x[,'TailNum']]) -@ -This arithmetic is conducted on \proglang{R} vectors extracted from -the \code{big.matrix}; use of -\code{as.integer()} helps keep the memory consumption under control. - -\vspace*{0.5cm} -\noindent -{\bf Concluding Example: a Big Regression} -\vspace*{0.5cm} - -In addition to providing basic functions for exploratory data analysis, the -package \pkg{biganalytics} provides a wrapper for Thomas Lumley's -\pkg{biglm} package, supporting massive -linear and generalized linear models.\footnote{Package \pkg{biganalytics} -also provides \code{bigkmeans()}, and other analytics may be added to the -package in the future.} The following toy example examines -the airline arrival delays as a linear function of the age of the plane -at the time of the flight and the year of the flight. About 85 million -flights are used (because of missing airplane tailcodes). -We estimate that use of \proglang{R}'s \texttt{lm()} -function would require more than 10 GB of RAM of memory overhead, while -this example runs in about 3 minutes with only several hundred MB of memory -overhead. -<>= -blm <- biglm.big.matrix(ArrDelay ~ Age + Year, data=x) -summary(blm) -@ -<>= -#Large data regression model: biglm(formula = formula, data = data, ...) -#Sample size = 84216580 -# Coef (95% CI) SE p -#(Intercept) 91.6149 87.6509 95.5789 1.9820 0 -#Age 0.0144 0.0142 0.0146 0.0001 0 -#Year -0.0424 -0.0444 -0.0404 0.0010 0 -@ -From this, we might conclude that older planes are associated with increased predicted -delays, and predicted delays in recent years are lower. However, this -exercise is merely for illustrative purposes; a serious study of airline delays would -quickly reject this oversimplification and discover problems with this particular -regression. - -\vspace*{0.5cm} -\noindent -{\bf Additional Information and Supporting Material} -\vspace*{0.5cm} - -These examples were tested both in Linux 64-bit and Windows 7 Enterprise 64-bit -environments. -Older versions of Windows operating systems (including Vista 64-bit) seem -to suffer from extremely inefficient caching behavior with filebackings and -are not recommended for use with -\pkg{bigmemory}; 32-bit environments will be limited by approximately 2 GB -of addressable memory. - -The packages are available via R-Forge and on CRAN as of -late April, 2010; please see -\url{http://www.bigmemory.org/} for more information. -There is a short vignette available in the Documentation area, -as well as presentation slides introducing \pkg{bigmemory} -and providing some benchmarks and shared-memory parallel programming -examples. Please do not use the older version of \pkg{bigmemory} -archived on CRAN (versions <= 3.12). - -\newpage - -\noindent -{\bf Citations} -\vspace*{0.5cm} - -\begin{enumerate} -\item The Bigmemory Project, \url{http://www.bigmemory.org/}, the home of \proglang{R} packages -\pkg{bigmemory}, \pkg{biganalytics}, \pkg{bigtabulate}, \pkg{bigalgebra}, and -\pkg{synchronicity}. Packages available from CRAN or R-Forge. - -\item 2009 JSM Data Expo: Airline on-time performance. \url {http://stat-computing.org/dataexpo/2009/}. - -\item Thomas Lumley (2009). \pkg{biglm}: bounded memory linear and generalized - linear models. \proglang{R} package version 0.7, - \url{http://CRAN.R-project.org/package=biglm}. - -\item \proglang{R} Development Core Team (2009). \proglang{R}: A language and environment for - statistical computing. \proglang{R} Foundation for Statistical Computing, - Vienna, Austria. ISBN 3-900051-07-0, \url{http://www.R-project.org}. - -\item Luke Tierney, A. J. Rossini, Na Li and H. Sevcikova (). \pkg{snow}: Simple - Network of Workstations. \proglang{R} package version 0.3-3, - \url{http://CRAN.R-project.org/package=snow}. - -\item Simon Urbanek (2009). \pkg{multicore}: Parallel processing of \proglang{R} code on - machines with multiple cores or CPUs. \proglang{R} package version 0.1-3, - \url{http://www.rforge.net/multicore/}. - -\item Stephen Weston and REvolution Computing (2009). \pkg{doMC}: Foreach parallel adaptor for the - \pkg{multicore} package. \proglang{R} package version 1.2.0, - \url{http://CRAN.R-project.org/package=doMC}. - -\item Stephen Weston and REvolution Computing (2009). \pkg{foreach}: Foreach looping -construct for \proglang{R}. \proglang{R} package version 1.3.0, -\url{http://CRAN.R-project.org/package=foreach}. - -\item Hao Yu (2010). \pkg{Rmpi}: Interface (Wrapper) to MPI (Message-Passing Interface). - \proglang{R} package version 0.5-8, \url{http://www.stats.uwo.ca/faculty/yu/Rmpi}. -\end{enumerate} - - -%\end{raggedright} - -\end{document} diff --git a/inst/doc/Overview.pdf b/inst/doc/Overview.pdf deleted file mode 100644 index 13ce8b51ac5d58cd3df29c73eabf1d03278a8eeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158790 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%0A{qR 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

fsp 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%0AdY9AH~tAl~W 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 diff --git a/man/as.big.matrix-methods.Rd b/man/as.big.matrix-methods.Rd index 8e12622..99b5c3d 100644 --- a/man/as.big.matrix-methods.Rd +++ b/man/as.big.matrix-methods.Rd @@ -18,9 +18,9 @@ values will be lost. \section{Methods}{ \describe{ - \item{\code{signature(x = "matrix")}}{ ... } - \item{\code{signature(x = "vector")}}{ ... } - \item{\code{signature(x = "data.frame")}}{ ... } +\item{\code{signature(x = "matrix")}}{ ... } +\item{\code{signature(x = "vector")}}{ ... } +\item{\code{signature(x = "data.frame")}}{ ... } } } diff --git a/man/as.matrix-big.matrix-method.Rd b/man/as.matrix-big.matrix-method.Rd index f5bf906..bbce670 100644 --- a/man/as.matrix-big.matrix-method.Rd +++ b/man/as.matrix-big.matrix-method.Rd @@ -1,6 +1,5 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/bigmemory.R -\docType{methods} \name{as.matrix,big.matrix-method} \alias{as.matrix,big.matrix-method} \title{Convert to base R matrix} diff --git a/man/attach.big.matrix.Rd b/man/attach.big.matrix.Rd index 7a8bb63..f1b175b 100644 --- a/man/attach.big.matrix.Rd +++ b/man/attach.big.matrix.Rd @@ -1,6 +1,5 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/bigmemory.R -\docType{methods} \name{describe,big.matrix-method} \alias{describe,big.matrix-method} \alias{attach.big.matrix} @@ -15,11 +14,11 @@ attach.big.matrix(obj, ...) \arguments{ \item{x}{a \code{\link{big.matrix}} object} -\item{obj}{an object as returned by \code{describe()} or, optionally, -the filename of the descriptor for a filebacked matrix, assumed to be in +\item{obj}{an object as returned by \code{describe()} or, optionally, +the filename of the descriptor for a filebacked matrix, assumed to be in the directory specified by the \code{path} (if one is provided)} -\item{...}{possibly \code{path} which gives the path where the descriptor +\item{...}{possibly \code{path} which gives the path where the descriptor and/or filebacking can be found} } \value{ @@ -30,17 +29,17 @@ a \code{big.matrix} object. corresponding to a shared-memory or file-backed \code{big.matrix}. } \description{ -The \code{describe} function returns the information needed by -\code{attach.big.matrix} to reference a shared or file-backed +The \code{describe} function returns the information needed by +\code{attach.big.matrix} to reference a shared or file-backed \code{big.matrix} object. The \code{attach.big.matrix} and \code{attach.resource} functions create a new \code{big.matrix} object based on the descriptor information referencing previously allocated shared-memory or file-backed matrices. } \details{ -The \code{describe} function returns a list of the information needed to -attach to a \code{big.matrix} object. -A descriptor file is automatically created when a new filebacked +The \code{describe} function returns a list of the information needed to +attach to a \code{big.matrix} object. +A descriptor file is automatically created when a new filebacked \code{big.matrix} is created. } \examples{ @@ -67,11 +66,11 @@ y[,] z[,] } \seealso{ -\code{\link{bigmemory}}, \code{\link{big.matrix}}, or the class +\code{\link{bigmemory}}, \code{\link{big.matrix}}, or the class documentation \code{\linkS4class{big.matrix}}. } \author{ -Michael J. Kane and John W. Emerson +Michael J. Kane and John W. Emerson \email{} } \keyword{classes} diff --git a/man/big.matrix-class.Rd b/man/big.matrix-class.Rd index dad3e79..efd5d63 100644 --- a/man/big.matrix-class.Rd +++ b/man/big.matrix-class.Rd @@ -5,14 +5,14 @@ \alias{big.matrix-class} \title{Class "big.matrix"} \description{ -The \code{big.matrix} class is designed for matrices with +The \code{big.matrix} class is designed for matrices with elements of type \code{double}, \code{integer}, \code{short}, or \code{char}. A \code{big.matrix} acts much like a traditional \R matrix, but helps protect -the user from many inadvertent memory-consuming pitfalls of traditional \R +the user from many inadvertent memory-consuming pitfalls of traditional \R matrices and data frames. The objects are allocated to shared memory, and if file-backing is used they may exceed virtual memory in size. Sadly, -32-bit operating system constraints -- largely Windows and some MacOS versions ---will be a limiting factor with file-backed matrices; 64-bit operating +32-bit operating system constraints -- largely Windows and some MacOS versions +--will be a limiting factor with file-backed matrices; 64-bit operating systems are recommended. } \section{Objects from the Class}{ @@ -24,13 +24,13 @@ and \code{filebacked.big.matrix()} are intended for the user. \section{Slots}{ -\describe{\item{\code{address}:}{Object of class \code{"externalptr"} +\describe{\item{\code{address}:}{Object of class \code{"externalptr"} points to the memory location of the \acronym{C++} data structure.}} } \section{Methods}{ -\describe{ +\describe{ As you would expect: \item{[<-}{\code{signature(x = "big.matrix", i = "ANY", j = "ANY")}: ... } \item{[<-}{\code{signature(x = "big.matrix", i = "ANY", j = "missing")}: ... } @@ -48,47 +48,47 @@ As you would expect: \item{[}{\code{signature(x = "big.matrix", i = "missing", j = "missing", drop = "logical")}: ... } The following are probably more interesting: -\item{describe}{\code{signature(x = "big.matrix")}: provide necessary and +\item{describe}{\code{signature(x = "big.matrix")}: provide necessary and sufficient information for the sharing or re-attaching of the object. } -\item{dim}{\code{signature(x = "big.matrix")}: returns the dimension of the +\item{dim}{\code{signature(x = "big.matrix")}: returns the dimension of the \code{big.matrix}. } -\item{length}{\code{signature(x = "big.matrix")}: returns the product of the +\item{length}{\code{signature(x = "big.matrix")}: returns the product of the dimensions of the \code{big.matrix}. } -\item{dimnames<-}{\code{signature(x = "big.matrix", value = "list")}: set -the row and column names, prohibited by default (see \code{\link{bigmemory}} +\item{dimnames<-}{\code{signature(x = "big.matrix", value = "list")}: set +the row and column names, prohibited by default (see \code{\link{bigmemory}} to override). } \item{dimnames}{\code{signature(x = "big.matrix")}: get the row and column names. } -\item{head}{\code{signature(x = "big.matrix")}: get the first 6 (or +\item{head}{\code{signature(x = "big.matrix")}: get the first 6 (or \code{n}) rows. } -\item{as.matrix}{\code{signature(x = "big.matrix")}: coerce a +\item{as.matrix}{\code{signature(x = "big.matrix")}: coerce a \code{big.matrix} to a \code{matrix}. } -\item{is.big.matrix}{\code{signature(x = "big.matrix")}: return \code{TRUE} +\item{is.big.matrix}{\code{signature(x = "big.matrix")}: return \code{TRUE} if it's a \code{big.matrix}. } -\item{is.filebacked}{\code{signature(x = "big.matrix")}: return \code{TRUE} +\item{is.filebacked}{\code{signature(x = "big.matrix")}: return \code{TRUE} if there is a file-backing. } -\item{is.separated}{\code{signature(x = "big.matrix") }: return \code{TRUE} +\item{is.separated}{\code{signature(x = "big.matrix") }: return \code{TRUE} if the \code{big.matrix} is organized as a separated column vectors.} -\item{is.sub.big.matrix}{\code{signature(x = "big.matrix")}: return +\item{is.sub.big.matrix}{\code{signature(x = "big.matrix")}: return \code{TRUE} if this is a sub-matrix of a \code{big.matrix}. } -\item{ncol}{\code{signature(x = "big.matrix")}: returns the number of +\item{ncol}{\code{signature(x = "big.matrix")}: returns the number of columns. } \item{nrow}{\code{signature(x = "big.matrix")}: returns the number of rows. } -\item{print}{\code{signature(x = "big.matrix")}: a traditional \code{print()} -is intentionally disabled, and returns \code{head(x)} unless -\code{options()$bm.print.warning==FALSE}; in this case, \code{print(x[,])} +\item{print}{\code{signature(x = "big.matrix")}: a traditional \code{print()} +is intentionally disabled, and returns \code{head(x)} unless +\code{options()$bm.print.warning==FALSE}; in this case, \code{print(x[,])} is the result, which could be very big! } -\item{sub.big.matrix}{\code{signature(x = "big.matrix")}: for +\item{sub.big.matrix}{\code{signature(x = "big.matrix")}: for contiguous submatrices. } -\item{tail}{\code{signature(x = "big.matrix")}: returns the last 6 (or +\item{tail}{\code{signature(x = "big.matrix")}: returns the last 6 (or \code{n}) rows. } -\item{typeof}{\code{signature(x = "big.matrix")}: return the type of the +\item{typeof}{\code{signature(x = "big.matrix")}: return the type of the atomic elements of the \code{big.matrix}.} \item{write.big.matrix}{\code{signature(bigMat = "big.matrix", fileName = "character")}: produce an ASCII file from the \code{big.matrix}.} -\item{apply}{\code{signature(x = "big.matrix")}: \code{apply()} where -\code{MARGIN} may only be 1 or 2, but otherwise conforming to what you +\item{apply}{\code{signature(x = "big.matrix")}: \code{apply()} where +\code{MARGIN} may only be 1 or 2, but otherwise conforming to what you would expect from \code{apply()}.} } } @@ -100,7 +100,7 @@ showClass("big.matrix") \code{\link{big.matrix}} } \author{ -Michael J. Kane and John W. Emerson +Michael J. Kane and John W. Emerson \email{} } \keyword{classes} diff --git a/man/big.matrix.Rd b/man/big.matrix.Rd index 33c7218..cda58ca 100644 --- a/man/big.matrix.Rd +++ b/man/big.matrix.Rd @@ -1,6 +1,5 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/bigmemory.R -\docType{methods} \name{big.matrix} \alias{big.matrix} \alias{filebacked.big.matrix} @@ -25,18 +24,43 @@ \alias{is.nil} \title{The core "big.matrix" operations.} \usage{ -big.matrix(nrow, ncol, type = options()$bigmemory.default.type, init = NULL, - dimnames = NULL, separated = FALSE, backingfile = NULL, - backingpath = NULL, descriptorfile = NULL, binarydescriptor = FALSE, - shared = options()$bigmemory.default.shared) - -filebacked.big.matrix(nrow, ncol, type = options()$bigmemory.default.type, - init = NULL, dimnames = NULL, separated = FALSE, backingfile = NULL, - backingpath = NULL, descriptorfile = NULL, binarydescriptor = FALSE) - -as.big.matrix(x, type = NULL, separated = FALSE, backingfile = NULL, - backingpath = NULL, descriptorfile = NULL, binarydescriptor = FALSE, - shared = options()$bigmemory.default.shared) +big.matrix( + nrow, + ncol, + type = options()$bigmemory.default.type, + init = NULL, + dimnames = NULL, + separated = FALSE, + backingfile = NULL, + backingpath = NULL, + descriptorfile = NULL, + binarydescriptor = FALSE, + shared = options()$bigmemory.default.shared +) + +filebacked.big.matrix( + nrow, + ncol, + type = options()$bigmemory.default.type, + init = NULL, + dimnames = NULL, + separated = FALSE, + backingfile = NULL, + backingpath = NULL, + descriptorfile = NULL, + binarydescriptor = FALSE +) + +as.big.matrix( + x, + type = NULL, + separated = FALSE, + backingfile = NULL, + backingpath = NULL, + descriptorfile = NULL, + binarydescriptor = FALSE, + shared = options()$bigmemory.default.shared +) is.big.matrix(x) @@ -79,112 +103,112 @@ is.nil(address) \item{ncol}{number of columns.} -\item{type}{the type of the atomic element -(\code{options()$bigmemory.default.type} by default -- \code{"double"} -- -but can be changed by the user to \code{"integer"}, \code{"short"}, or +\item{type}{the type of the atomic element +(\code{options()$bigmemory.default.type} by default -- \code{"double"} -- +but can be changed by the user to \code{"integer"}, \code{"short"}, or \code{"char"}).} -\item{init}{a scalar value for initializing the matrix (\code{NULL} by +\item{init}{a scalar value for initializing the matrix (\code{NULL} by default to avoid unnecessary time spent doing the initializing).} -\item{dimnames}{a list of the row and column names; use with caution +\item{dimnames}{a list of the row and column names; use with caution for large objects.} -\item{separated}{use separated column organization of the data; +\item{separated}{use separated column organization of the data; see details.} \item{backingfile}{the root name for the file(s) for the cache of \code{x}.} -\item{backingpath}{the path to the directory containing the file +\item{backingpath}{the path to the directory containing the file backing cache.} -\item{descriptorfile}{the name of the file to hold the backingfile -description, for subsequent use with \code{\link{attach.big.matrix}}; -if \code{NULL}, the \code{backingfile} is used as the root part of the -descriptor file name. The descriptor file is placed in the same directory +\item{descriptorfile}{the name of the file to hold the backingfile +description, for subsequent use with \code{\link{attach.big.matrix}}; +if \code{NULL}, the \code{backingfile} is used as the root part of the +descriptor file name. The descriptor file is placed in the same directory as the backing files.} -\item{binarydescriptor}{the flag to specify if the binary RDS format -should be used for the backingfile description, for subsequent use with -\code{\link{attach.big.matrix}}; if \code{NULL} of \code{FALSE}, the +\item{binarydescriptor}{the flag to specify if the binary RDS format +should be used for the backingfile description, for subsequent use with +\code{\link{attach.big.matrix}}; if \code{NULL} of \code{FALSE}, the \code{dput()} file format is used.} -\item{shared}{\code{TRUE} by default, and always \code{TRUE} if the -\code{big.matrix} is file-backed. For a non-filebacked \code{big.matrix}, -\code{shared=FALSE} uses non-shared memory, which can be more stable for -large (say, >50% of RAM) objects. Shared memory allocation can sometimes +\item{shared}{\code{TRUE} by default, and always \code{TRUE} if the +\code{big.matrix} is file-backed. For a non-filebacked \code{big.matrix}, +\code{shared=FALSE} uses non-shared memory, which can be more stable for +large (say, >50\% of RAM) objects. Shared memory allocation can sometimes fail in such cases due to exhausted shared-memory resources in the system.} -\item{x}{a \code{matrix}, \code{vector}, or \code{data.frame} for -\code{as.big.matrix}; if a vector, a one-column\cr \code{big.matrix} is -created by \code{as.big.matrix}; if a \code{data.frame}, see details. +\item{x}{a \code{matrix}, \code{vector}, or \code{data.frame} for +\code{as.big.matrix}; if a vector, a one-column\cr \code{big.matrix} is +created by \code{as.big.matrix}; if a \code{data.frame}, see details. For the \code{is.*} functions, \code{x} is likely a \code{big.matrix}.} -\item{address}{an \code{externalptr}, so \code{is.nil(x@address)} might +\item{address}{an \code{externalptr}, so \code{is.nil(x@address)} might be a sensible thing to want to check, but it's pretty obscure.} } \value{ A \code{big.matrix} is returned (for \code{big.matrix} and \code{filebacked.big.matrix}, and\cr \code{as.big.matrix}), -and \code{TRUE} or \code{FALSE} for \code{is.big.matrix} and the +and \code{TRUE} or \code{FALSE} for \code{is.big.matrix} and the other functions. } \description{ -Create a \code{big.matrix} (or check to see if an object -is a \code{big.matrix}, or create a \code{big.matrix} from a +Create a \code{big.matrix} (or check to see if an object +is a \code{big.matrix}, or create a \code{big.matrix} from a \code{\link{matrix}}, and so on). The \code{big.matrix} may be file-backed. } \details{ -A \code{big.matrix} consists of an object in \R that does nothing -more than point to the data structure implemented in \acronym{C++}. The -object acts much like a traditional \R matrix, but helps protect the user -from many inadvertent memory-consuming pitfalls of traditional \R matrices +A \code{big.matrix} consists of an object in \R that does nothing +more than point to the data structure implemented in \acronym{C++}. The +object acts much like a traditional \R matrix, but helps protect the user +from many inadvertent memory-consuming pitfalls of traditional \R matrices and data frames. There are two \code{big.matrix} types which manage data in different ways. A standard, shared \code{big.matrix} is constrained -to available \acronym{RAM}, and may be shared across separate \R processes. -A file-backed \code{big.matrix} may exceed available \acronym{RAM} by -using hard drive space, and may also be shared across processes. The -atomic types of these matrices may be \code{double}, \code{integer}, +to available \acronym{RAM}, and may be shared across separate \R processes. +A file-backed \code{big.matrix} may exceed available \acronym{RAM} by +using hard drive space, and may also be shared across processes. The +atomic types of these matrices may be \code{double}, \code{integer}, \code{short}, or \code{char} (8, 4, 2, and 1 bytes, respectively). If \code{x} is a \code{big.matrix}, then \code{x[1:5,]} is returned as an R -\code{matrix} containing the first five rows of \code{x}. If \code{x} is of -type \code{double}, then the result will be \code{numeric}; otherwise, the +\code{matrix} containing the first five rows of \code{x}. If \code{x} is of +type \code{double}, then the result will be \code{numeric}; otherwise, the result will be an \code{integer} \R matrix. The expression \code{x} alone -will display information about the \R object (e.g. the external pointer) -rather than evaluating the matrix itself (the user should try \code{x[,]} -with extreme caution, recognizing that a huge \R \code{matrix} will +will display information about the \R object (e.g. the external pointer) +rather than evaluating the matrix itself (the user should try \code{x[,]} +with extreme caution, recognizing that a huge \R \code{matrix} will be created). -If \code{x} has a huge number of rows and/or columns, then the use of -\code{rownames} and/or \code{colnames} will be extremely memory-intensive -and should be avoided. If \code{x} has a huge number of columns and +If \code{x} has a huge number of rows and/or columns, then the use of +\code{rownames} and/or \code{colnames} will be extremely memory-intensive +and should be avoided. If \code{x} has a huge number of columns and \code{separated=TRUE} is used (this isn't typically recommended), -the user might want to store the transpose as there is overhead of a -pointer for each column in the matrix. If \code{separated} is \code{TRUE}, -then the memory is allocated into separate vectors for each column. -Use this option with caution if you have a large number of columns, as -shared-memory segments are limited by OS and hardware combinations. If -\code{separated} is \code{FALSE}, the matrix is stored in traditional -column-major format. The function \code{is.separated()} returns the +the user might want to store the transpose as there is overhead of a +pointer for each column in the matrix. If \code{separated} is \code{TRUE}, +then the memory is allocated into separate vectors for each column. +Use this option with caution if you have a large number of columns, as +shared-memory segments are limited by OS and hardware combinations. If +\code{separated} is \code{FALSE}, the matrix is stored in traditional +column-major format. The function \code{is.separated()} returns the separation type of the \code{big.matrix}. When a \code{big.matrix}, \code{x}, is passed as an argument to a function, it is essentially providing call-by-reference rather than -call-by-value behavior. If the function modifies any of the values of -\code{x}, the changes are not limited in scope to a local copy within the -function. This introduces the possibility of side-effects, in contrast to +call-by-value behavior. If the function modifies any of the values of +\code{x}, the changes are not limited in scope to a local copy within the +function. This introduces the possibility of side-effects, in contrast to standard \R behavior. -A file-backed \code{big.matrix} may exceed available \acronym{RAM} in size -by using a file cache (or possibly multiple file caches, if -\code{separated=TRUE}). This can incur a substantial performance penalty for -such large matrices, but less of a penalty than most other approaches for -handling such large objects. A side-effect of creating a file-backed object -is not only the file-backing(s), but a descriptor file (in the same -directory) that is needed for subsequent attachments (see +A file-backed \code{big.matrix} may exceed available \acronym{RAM} in size +by using a file cache (or possibly multiple file caches, if +\code{separated=TRUE}). This can incur a substantial performance penalty for +such large matrices, but less of a penalty than most other approaches for +handling such large objects. A side-effect of creating a file-backed object +is not only the file-backing(s), but a descriptor file (in the same +directory) that is needed for subsequent attachments (see \code{\link{attach.big.matrix}}). Note that we do not allow setting or changing the \code{dimnames} attributes @@ -196,13 +220,13 @@ It should also be noted that a user can create an ``anonymous'' file-backed \code{big.matrix} by specifying "" as the \code{filebacking} argument. In this case, the backing resides in the temporary directory and a descriptor file is not created. These should be used with caution since -even anonymous backings use disk space which could eventually fill the -hard drive. Anonymous backings are removed either manually, by a +even anonymous backings use disk space which could eventually fill the +hard drive. Anonymous backings are removed either manually, by a user, or automatically, when the operating system deems it appropriate. -Finally, note that \code{as.big.matrix} can coerce data frames. It does -this by making any character columns into factors, and then making all -factors numeric before forming the \code{big.matrix}. Level labels are +Finally, note that \code{as.big.matrix} can coerce data frames. It does +this by making any character columns into factors, and then making all +factors numeric before forming the \code{big.matrix}. Level labels are not preserved and must be managed by the user if desired. } \examples{ @@ -251,7 +275,7 @@ The Bigmemory Project: \url{http://www.bigmemory.org/}. \pkg{synchronicity}, and \pkg{bigalgebra} provide advanced functionality. } \author{ -John W. Emerson and Michael J. Kane +John W. Emerson and Michael J. Kane \email{} } \keyword{classes} diff --git a/man/big.matrix.descriptor-class.Rd b/man/big.matrix.descriptor-class.Rd index 3289eed..c77fd60 100644 --- a/man/big.matrix.descriptor-class.Rd +++ b/man/big.matrix.descriptor-class.Rd @@ -9,8 +9,14 @@ \alias{attach.resource,big.matrix.descriptor-method} \title{Class "big.matrix.descriptor"} \usage{ -\S4method{sub.big.matrix}{big.matrix.descriptor}(x, firstRow = 1, - lastRow = NULL, firstCol = 1, lastCol = NULL, backingpath = NULL) +\S4method{sub.big.matrix}{big.matrix.descriptor}( + x, + firstRow = 1, + lastRow = NULL, + firstCol = 1, + lastCol = NULL, + backingpath = NULL +) \S4method{attach.resource}{character}(obj, ...) @@ -51,9 +57,9 @@ but should use the \code{\link{describe}} function. \section{Slots}{ - \describe{ - \item{\code{description}:}{Object of class \code{"list"}; details omitted.} - } +\describe{ +\item{\code{description}:}{Object of class \code{"list"}; details omitted.} +} } \section{Extends}{ @@ -64,9 +70,9 @@ Class \code{"\linkS4class{descriptor}"}, directly. \section{Methods}{ \describe{ - \item{attach.resource}{\code{signature(obj = "big.matrix.descriptor")}: ... } - \item{sub.big.matrix}{\code{signature(x = "big.matrix.descriptor")}: ... } - } +\item{attach.resource}{\code{signature(obj = "big.matrix.descriptor")}: ... } +\item{sub.big.matrix}{\code{signature(x = "big.matrix.descriptor")}: ... } +} } \examples{ diff --git a/man/deepcopy.Rd b/man/deepcopy.Rd index ff17bdb..bfae23c 100644 --- a/man/deepcopy.Rd +++ b/man/deepcopy.Rd @@ -4,10 +4,19 @@ \alias{deepcopy} \title{Produces a physical copy of a ``big.matrix''} \usage{ -deepcopy(x, cols = NULL, rows = NULL, y = NULL, type = NULL, - separated = NULL, backingfile = NULL, backingpath = NULL, - descriptorfile = NULL, binarydescriptor = FALSE, - shared = options()$bigmemory.default.shared) +deepcopy( + x, + cols = NULL, + rows = NULL, + y = NULL, + type = NULL, + separated = NULL, + backingfile = NULL, + backingpath = NULL, + descriptorfile = NULL, + binarydescriptor = FALSE, + shared = options()$bigmemory.default.shared +) } \arguments{ \item{x}{a \code{\link{big.matrix}}.} @@ -42,7 +51,7 @@ be used for the backingfile description, for subsequent use with \item{shared}{\code{TRUE} by default, and always \code{TRUE} if the \code{big.matrix} is file-backed. For a non-filebacked \code{big.matrix}, \code{shared=FALSE} uses non-shared memory, which can be more stable for -large (say, >50\% of RAM) objects. Shared memory allocation can sometimes +large (say, >50\\% of RAM) objects. Shared memory allocation can sometimes fail in such cases due to exhausted shared-memory resources in the system.} } \value{ diff --git a/man/dim-big.matrix-method.Rd b/man/dim-big.matrix-method.Rd index 341b153..6e10ab8 100644 --- a/man/dim-big.matrix-method.Rd +++ b/man/dim-big.matrix-method.Rd @@ -1,6 +1,5 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/bigmemory.R -\docType{methods} \name{dim,big.matrix-method} \alias{dim,big.matrix-method} \title{Dimensions of a big.matrix object} diff --git a/man/extract-methods.Rd b/man/extract-methods.Rd index e7a0470..b9f234f 100644 --- a/man/extract-methods.Rd +++ b/man/extract-methods.Rd @@ -4,6 +4,7 @@ \name{Extract,big.matrix} \alias{Extract,big.matrix} \alias{[,big.matrix,ANY,ANY,missing-method} +\alias{[<-,big.matrix,ANY,ANY,ANY-method} \alias{[,big.matrix,ANY,ANY,logical-method} \alias{[,big.matrix,missing,ANY,missing-method} \alias{[,big.matrix,missing,ANY,logical-method} diff --git a/man/flush-methods.Rd b/man/flush-methods.Rd index 1d111df..7d4f604 100644 --- a/man/flush-methods.Rd +++ b/man/flush-methods.Rd @@ -18,13 +18,13 @@ flush(con) } \description{ For a file-backed \code{big.matrix} object, \code{flush()} forces - any modified information to be written to the file-backing. +any modified information to be written to the file-backing. } \details{ This function flushes any modified data (in \acronym{RAM}) of a file-backed - \code{big.matrix} to disk. This may be useful for - improving performance in cases where allowing the operating system to decide - on flushing creates a bottleneck (likely near the threshold of available \acronym{RAM}). +\code{big.matrix} to disk. This may be useful for +improving performance in cases where allowing the operating system to decide +on flushing creates a bottleneck (likely near the threshold of available \acronym{RAM}). } \examples{ temp_dir = tempdir() diff --git a/man/is.float-numeric-method.Rd b/man/is.float-numeric-method.Rd index 43d0df0..76fe27b 100644 --- a/man/is.float-numeric-method.Rd +++ b/man/is.float-numeric-method.Rd @@ -1,6 +1,5 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/bigmemory.R -\docType{methods} \name{is.float,numeric-method} \alias{is.float,numeric-method} \title{Is Float?} diff --git a/man/length-big.matrix-method.Rd b/man/length-big.matrix-method.Rd index a515675..2ccad0b 100644 --- a/man/length-big.matrix-method.Rd +++ b/man/length-big.matrix-method.Rd @@ -1,6 +1,5 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/bigmemory.R -\docType{methods} \name{length,big.matrix-method} \alias{length,big.matrix-method} \title{Length of a big.matrix object} diff --git a/man/morder.Rd b/man/morder.Rd index 338d542..893217d 100644 --- a/man/morder.Rd +++ b/man/morder.Rd @@ -5,8 +5,7 @@ \alias{morderCols} \alias{mpermute} \alias{mpermuteCols} -\title{Ordering and Permuting functions for ``big.matrix'' and -``matrix'' objects} +\title{Ordering and Permuting functions for \verb{big.matrix'' and }matrix'' objects} \usage{ morder(x, cols, na.last = TRUE, decreasing = FALSE) @@ -21,23 +20,23 @@ mpermuteCols(x, order = NULL, rows = NULL, allow.duplicates = FALSE, ...) \item{cols}{The columns of \code{x} to get the ordering for or reorder on} -\item{na.last}{for controlling the treatment of \code{NA}s. If -\code{TRUE}, missing values in the data are put last; if \code{FALSE}, +\item{na.last}{for controlling the treatment of \code{NA}s. If +\code{TRUE}, missing values in the data are put last; if \code{FALSE}, they are put first; if \code{NA}, they are removed.} -\item{decreasing}{logical. Should the sort order be increasing or +\item{decreasing}{logical. Should the sort order be increasing or decreasing?} \item{rows}{The rows of \code{x} to get the ordering for or reorder on} -\item{order}{A vector specifying the reordering of rows, i.e. the +\item{order}{A vector specifying the reordering of rows, i.e. the result of a call to \code{order} or \code{morder}.} \item{allow.duplicates}{ff \code{TRUE}, allows a row to be duplicated in -the resulting \code{big.matrix} or \code{matrix} (i.e. in this case, +the resulting \code{big.matrix} or \code{matrix} (i.e. in this case, \code{order} would not need to be a permutation of \code{1:nrow(x)}).} -\item{...}{optional parameters to pass to \code{morder} when \code{cols} +\item{...}{optional parameters to pass to \code{morder} when \code{cols} is specified instead of just using \code{order}.} } \value{ @@ -47,22 +46,22 @@ This type of a side-effect is generally frowned upon in \R, but we ``break'' the rules here to avoid memory overhead and improve performance. } \description{ -The \code{morder} function returns a permutation of row -indices which can be used to rearrange an object according to the values +The \code{morder} function returns a permutation of row +indices which can be used to rearrange an object according to the values in the specified columns (a multi-column ordering). -The \code{mpermute} function actually reorders the rows of a -\code{big.matrix} or \code{matrix} based on +The \code{mpermute} function actually reorders the rows of a +\code{big.matrix} or \code{matrix} based on an order vector or a desired ordering on a set of columns. } \details{ -The \code{morder} function behaves similar to \code{order}, -returning a permutation of \code{1:nrow(x)} which rearranges objects -according to the values in the specified columns. However, \code{morder} -takes a \code{big.matrix} or an \R \code{matrix} (with numeric type) and -a set of columns (\code{cols}) with which to determine the ordering; -\code{morder} does not incur the same memory overhead required by +The \code{morder} function behaves similar to \code{order}, +returning a permutation of \code{1:nrow(x)} which rearranges objects +according to the values in the specified columns. However, \code{morder} +takes a \code{big.matrix} or an \R \code{matrix} (with numeric type) and +a set of columns (\code{cols}) with which to determine the ordering; +\code{morder} does not incur the same memory overhead required by \code{order}, and runs more quickly. - + The \code{mpermute} function changes the row ordering of a \code{big.matrix} or \code{matrix} based on a vector \code{order} or an ordering based on a set of columns specified by \code{cols}. It should be noted that diff --git a/man/mwhich-methods.Rd b/man/mwhich-methods.Rd index 42b61ba..d15b3fe 100644 --- a/man/mwhich-methods.Rd +++ b/man/mwhich-methods.Rd @@ -16,17 +16,17 @@ the memory overhead. test } \section{Methods}{ - -\describe{ - \item{signature(x = "big.matrix=", cols - = "ANY", vals = "ANY",", " comps = "ANY", op = "character")}{ - ... } - \item{signature(x = "big.matrix", cols = "ANY", vals = - "ANY",", " comps = "ANY", op = "missing")}{ ... } - \item{signature(x = "matrix", cols = "ANY", vals = "ANY",", " - comps = "ANY", op = "character")}{ ... } - \item{signature(x = "matrix", cols = "ANY", vals = "ANY",", - " comps = "ANY", op = "missing")}{ ... } } + +\describe{ +\item{signature(x = "big.matrix=", cols += "ANY", vals = "ANY",", " comps = "ANY", op = "character")}{ +... } +\item{signature(x = "big.matrix", cols = "ANY", vals = +"ANY",", " comps = "ANY", op = "missing")}{ ... } +\item{signature(x = "matrix", cols = "ANY", vals = "ANY",", " +comps = "ANY", op = "character")}{ ... } +\item{signature(x = "matrix", cols = "ANY", vals = "ANY",", +" comps = "ANY", op = "missing")}{ ... } } } \seealso{ diff --git a/man/mwhich.Rd b/man/mwhich.Rd index 3a5fe69..feef38a 100644 --- a/man/mwhich.Rd +++ b/man/mwhich.Rd @@ -11,46 +11,46 @@ mwhich(x, cols, vals, comps, op = "AND") \item{cols}{a vector of column indices or names.} -\item{vals}{a list (one component for each of \code{cols}) of vectors of -length 1 or 2; length 1 is used to test equality (or inequality), while -vectors of length 2 are used for checking values in the range (\code{-Inf} -and \code{Inf} are allowed). If a scalar or vector of length 2 is provided +\item{vals}{a list (one component for each of \code{cols}) of vectors of +length 1 or 2; length 1 is used to test equality (or inequality), while +vectors of length 2 are used for checking values in the range (\code{-Inf} +and \code{Inf} are allowed). If a scalar or vector of length 2 is provided instead of a list, it will be replicated \code{length(cols)} times.} -\item{comps}{a list of operators (one component for each of \code{cols}), -including \code{'eq'}, \code{'neq'}, \code{'le'}, \code{'lt'}, \code{'ge'} -and \code{'gt'}. If a single operator, it will be replicated +\item{comps}{a list of operators (one component for each of \code{cols}), +including \code{'eq'}, \code{'neq'}, \code{'le'}, \code{'lt'}, \code{'ge'} +and \code{'gt'}. If a single operator, it will be replicated \code{length(cols)} times.} -\item{op}{the comparison operator for combining the results of the +\item{op}{the comparison operator for combining the results of the individual tests, either \code{'AND'} or \code{'OR'}.} } \value{ a vector of row indices satisfying the criteria. } \description{ -Implements \code{\link{which}}-like functionality for a \code{\link{big.matrix}}, +Implements \code{\link{which}}-like functionality for a \code{\link{big.matrix}}, with additional options for efficient comparisons (executed in \acronym{C++}); also works for regular numeric matrices without the memory overhead. } \details{ -To improve performance and avoid the creation of massive temporary vectors -in \R when doing comparisons, \code{mwhich()} efficiently executes -column-by-column comparisons of values to the specified values or ranges, -and then returns the row indices satisfying the comparison specified by the -\code{op} operator. More advanced comparisons are then possible -(and memory-efficient) in \R by doing set operations (\code{\link{union}} -and \code{\link{intersect}}, for example) on the results of multiple +To improve performance and avoid the creation of massive temporary vectors +in \R when doing comparisons, \code{mwhich()} efficiently executes +column-by-column comparisons of values to the specified values or ranges, +and then returns the row indices satisfying the comparison specified by the +\code{op} operator. More advanced comparisons are then possible +(and memory-efficient) in \R by doing set operations (\code{\link{union}} +and \code{\link{intersect}}, for example) on the results of multiple \code{mwhich()} calls. - - Note that \code{NA} is a valid argument in conjunction with \code{'eq'} or - \code{'neq'}, replacing traditional \code{is.na()} calls. - And both \code{-Inf} and \code{Inf} can be used for one-sided inequalities. - - If \code{mwhich()} is used with a regular numeric \R \code{matrix}, we - access the data directly and thus incur no memory overhead. Interested - developers might want to look at our code for this case, which uses a handy - pointer trick (accessor) in \acronym{C++}. + +Note that \code{NA} is a valid argument in conjunction with \code{'eq'} or +\code{'neq'}, replacing traditional \code{is.na()} calls. +And both \code{-Inf} and \code{Inf} can be used for one-sided inequalities. + +If \code{mwhich()} is used with a regular numeric \R \code{matrix}, we +access the data directly and thus incur no memory overhead. Interested +developers might want to look at our code for this case, which uses a handy +pointer trick (accessor) in \acronym{C++}. } \examples{ x <- as.big.matrix(matrix(1:30, 10, 3)) diff --git a/man/print-big.matrix-method.Rd b/man/print-big.matrix-method.Rd index 3108099..6fa9bf5 100644 --- a/man/print-big.matrix-method.Rd +++ b/man/print-big.matrix-method.Rd @@ -1,6 +1,5 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/bigmemory.R -\docType{methods} \name{print,big.matrix-method} \alias{print,big.matrix-method} \title{Print Values} diff --git a/man/sub.big.matrix.Rd b/man/sub.big.matrix.Rd index d31c455..e7b1178 100644 --- a/man/sub.big.matrix.Rd +++ b/man/sub.big.matrix.Rd @@ -1,6 +1,5 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/bigmemory.R -\docType{methods} \name{is.sub.big.matrix} \alias{is.sub.big.matrix} \alias{is.sub.big.matrix,big.matrix-method} @@ -12,11 +11,23 @@ is.sub.big.matrix(x) \S4method{is.sub.big.matrix}{big.matrix}(x) -sub.big.matrix(x, firstRow = 1, lastRow = NULL, firstCol = 1, - lastCol = NULL, backingpath = NULL) +sub.big.matrix( + x, + firstRow = 1, + lastRow = NULL, + firstCol = 1, + lastCol = NULL, + backingpath = NULL +) -\S4method{sub.big.matrix}{big.matrix}(x, firstRow = 1, lastRow = NULL, - firstCol = 1, lastCol = NULL, backingpath = NULL) +\S4method{sub.big.matrix}{big.matrix}( + x, + firstRow = 1, + lastRow = NULL, + firstCol = 1, + lastCol = NULL, + backingpath = NULL +) } \arguments{ \item{x}{either a \code{\link{big.matrix}} or a descriptor.} @@ -44,10 +55,10 @@ Non-contiguous submatrices are not supported. The \code{sub.big.matrix} function allows a user to create a \code{big.matrix} object that references a contiguous set of columns and rows of another \code{big.matrix} object. - - The \code{is.sub.big.matrix} function returns \code{TRUE} if the specified - argument is a \code{sub.big.matrix} object and return \code{FALSE} - otherwise. + +The \code{is.sub.big.matrix} function returns \code{TRUE} if the specified +argument is a \code{sub.big.matrix} object and return \code{FALSE} +otherwise. } \examples{ x <- big.matrix(10, 5, init=0, type="double") diff --git a/man/typeof-big.matrix-method.Rd b/man/typeof-big.matrix-method.Rd index b262948..e320d57 100644 --- a/man/typeof-big.matrix-method.Rd +++ b/man/typeof-big.matrix-method.Rd @@ -1,6 +1,5 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/bigmemory.R -\docType{methods} \name{typeof,big.matrix-method} \alias{typeof,big.matrix-method} \title{The Type of a big.matrix Object} diff --git a/man/write.big.matrix.Rd b/man/write.big.matrix.Rd index 155b6b8..1ac6e87 100644 --- a/man/write.big.matrix.Rd +++ b/man/write.big.matrix.Rd @@ -1,6 +1,5 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/bigmemory.R -\docType{methods} \name{write.big.matrix} \alias{write.big.matrix} \alias{write.big.matrix,big.matrix,character-method} @@ -8,76 +7,99 @@ \alias{read.big.matrix,character-method} \title{File interface for a ``big.matrix''} \usage{ -write.big.matrix(x, filename, row.names = FALSE, col.names = FALSE, - sep = ",") - -\S4method{write.big.matrix}{big.matrix,character}(x, filename, - row.names = FALSE, col.names = FALSE, sep = ",") - -read.big.matrix(filename, sep = ",", header = FALSE, col.names = NULL, - row.names = NULL, has.row.names = FALSE, ignore.row.names = FALSE, - type = NA, skip = 0, separated = FALSE, backingfile = NULL, - backingpath = NULL, descriptorfile = NULL, binarydescriptor = FALSE, - extraCols = NULL, shared = options()$bigmemory.default.shared) - -\S4method{read.big.matrix}{character}(filename, sep = ",", header = FALSE, - col.names = NULL, row.names = NULL, has.row.names = FALSE, - ignore.row.names = FALSE, type = NA, skip = 0, separated = FALSE, - backingfile = NULL, backingpath = NULL, descriptorfile = NULL, - binarydescriptor = FALSE, extraCols = NULL, - shared = options()$bigmemory.default.shared) +write.big.matrix(x, filename, row.names = FALSE, col.names = FALSE, sep = ",") + +\S4method{write.big.matrix}{big.matrix,character}(x, filename, row.names = FALSE, col.names = FALSE, sep = ",") + +read.big.matrix( + filename, + sep = ",", + header = FALSE, + col.names = NULL, + row.names = NULL, + has.row.names = FALSE, + ignore.row.names = FALSE, + type = NA, + skip = 0, + separated = FALSE, + backingfile = NULL, + backingpath = NULL, + descriptorfile = NULL, + binarydescriptor = FALSE, + extraCols = NULL, + shared = options()$bigmemory.default.shared +) + +\S4method{read.big.matrix}{character}( + filename, + sep = ",", + header = FALSE, + col.names = NULL, + row.names = NULL, + has.row.names = FALSE, + ignore.row.names = FALSE, + type = NA, + skip = 0, + separated = FALSE, + backingfile = NULL, + backingpath = NULL, + descriptorfile = NULL, + binarydescriptor = FALSE, + extraCols = NULL, + shared = options()$bigmemory.default.shared +) } \arguments{ \item{x}{a \code{\link{big.matrix}}.} \item{filename}{the name of an input/output file.} -\item{row.names}{a vector of names, use them even if row names appear to +\item{row.names}{a vector of names, use them even if row names appear to exist in the file.} -\item{col.names}{a vector of names, use them even if column names exist +\item{col.names}{a vector of names, use them even if column names exist in the file.} \item{sep}{a field delimiter.} -\item{header}{if \code{TRUE}, the first line (after a possible skip) +\item{header}{if \code{TRUE}, the first line (after a possible skip) should contain column names.} -\item{has.row.names}{if \code{TRUE}, then the first column contains row +\item{has.row.names}{if \code{TRUE}, then the first column contains row names.} -\item{ignore.row.names}{if \code{TRUE} when \code{has.row.names==TRUE}, +\item{ignore.row.names}{if \code{TRUE} when \code{has.row.names==TRUE}, the row names will be ignored.} \item{type}{preferably specified, \code{"integer"} for example.} \item{skip}{number of lines to skip at the head of the file.} -\item{separated}{use separated column organization of the data instead of +\item{separated}{use separated column organization of the data instead of column-major organization.} \item{backingfile}{the root name for the file(s) for the cache of \code{x}.} -\item{backingpath}{the path to the directory containing the file backing +\item{backingpath}{the path to the directory containing the file backing cache.} -\item{descriptorfile}{the file to be used for the description of the +\item{descriptorfile}{the file to be used for the description of the filebacked matrix.} -\item{binarydescriptor}{the flag to specify if the binary RDS format should -be used for the backingfile description, for subsequent use with -\code{\link{attach.big.matrix}}; if \code{NULL} of \code{FALSE}, the +\item{binarydescriptor}{the flag to specify if the binary RDS format should +be used for the backingfile description, for subsequent use with +\code{\link{attach.big.matrix}}; if \code{NULL} of \code{FALSE}, the \code{dput()} file format is used.} \item{extraCols}{the optional number of extra columns to be appended to the matrix for future use.} -\item{shared}{if \code{TRUE}, the resulting \code{big.matrix} can be shared +\item{shared}{if \code{TRUE}, the resulting \code{big.matrix} can be shared across processes.} } \value{ -a \code{\link{big.matrix}} object is returned by \code{read.big.matrix}, -while \code{write.big.matrix} creates an output file (a path could be part +a \code{\link{big.matrix}} object is returned by \code{read.big.matrix}, +while \code{write.big.matrix} creates an output file (a path could be part of \code{filename}). } \description{ @@ -93,7 +115,7 @@ should be helpful in obtaining the desired behavior. When reading from a file, if \code{type} is not specified we try to make a reasonable guess for you without -making any guarantees at this point. +making any guarantees at this point. Unless you have really large integer values, we recommend you consider \code{"short"}. If you have something that is essentially categorical, you might even be able use \code{"char"}, with huge memory @@ -153,7 +175,7 @@ if (FALSE) y <- read.big.matrix(file.path(temp_dir, "IrisData.txt"), \code{\link{big.matrix}} } \author{ -John W. Emerson and Michael J. Kane +John W. Emerson and Michael J. Kane \email{} } \keyword{methods} diff --git a/src/symbols.rds b/src/symbols.rds deleted file mode 100644 index ebfc09d206911cf61117ad9d28a37a210c9aa3ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17920 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 diff --git a/vignettes/Overview.Rnw b/vignettes/Overview.Rnw deleted file mode 100644 index 39ce880..0000000 --- a/vignettes/Overview.Rnw +++ /dev/null @@ -1,409 +0,0 @@ -% \VignetteIndexEntry{The Bigmemory Project Overview} -% \VignetteDepends{bigmemory} -% \VignettePackage{bigmemory} -% \VignetteEngine{knitr::knitr} -\documentclass[12pt]{article} - -\usepackage{graphics} -\usepackage{graphicx} - -\usepackage{accents} - -% New from euler: -\usepackage{ae} -\usepackage{color} -\usepackage{url} - -\topmargin=-0.85in -\textheight=9.5in -\textwidth=6.5in -\oddsidemargin=0in -%-0.25in - -%\usepackage{CJK} -%\usepackage{pinyin} -\def\E{\mathord{I\kern-.35em E}} -\def\R{\mathord{I\kern-.35em R}} -\def\P{\mathord{I\kern-.35em P}} -\def\I{\mathord{1\kern-.35em 1}} -\def\wt{\mathord{\widehat{\theta}}} - -\newcommand{\proglang}[1]{\textbf{#1}} -\newcommand{\pkg}[1]{\texttt{\textsl{#1}}} -\newcommand{\code}[1]{\texttt{#1}} -\newcommand{\mg}[1]{{\textcolor {magenta} {#1}}} -\newcommand{\gr}[1]{{\textcolor {green} {#1}}} -\newcommand{\bl}[1]{{\textcolor {blue} {#1}}} - -\newtheorem{thm}{Theorem}[section] -\newtheorem{myexplore}[thm]{Explore} -\newtheorem{mybackground}[thm]{Background} -\newtheorem{myquestion}[thm]{Question} -\newtheorem{myexample}[thm]{Example} -\newtheorem{mydefinition}[thm]{Definition} -\newtheorem{mytheorem}[thm]{Theorem} - -%\pagestyle{myheadings} % Go for customized headings -%\markboth{notused left title}{John W. Emerson, Department of Statistics, Yale University \copyright 2009} -%\newcommand{\sekshun}[1] % In 'article' only the page -% { % number appears in the header. -% \section{#1} % I want the section name AND -% \markboth{#1 \hfill}{#1 \hfill} % the page, so I need a new kind -% } % of '\sekshun' command. - -\begin{document} - -\setkeys{Gin}{width=1.0\textwidth} - -<>= -library(knitr) -opts_chunk$set( -fig.path='graphics/stat' -) -@ - - -<>= -options(keep.source = TRUE, width = 75) -@ - -\begin{center} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -{\Large\bf The Bigmemory Project} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\vspace*{0.5cm} -{\bf Michael J. Kane and John W. Emerson\\ -Yale University\\ -April 29, 2010} - -\vspace*{0.25cm} - -\end{center} - -%\begin{raggedright} -\parindent=0.5in - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\begin{quotation} -Multi-gigabyte data sets often challenge and frustrate \proglang{R} -users. \proglang{C/C++} programming can provide efficiencies, -but is cumbersome for interactive data analysis and -lacks the flexibility and power of \proglang{R}'s rich statistical -programming environment. The package \pkg{bigmemory} and sister -packages \pkg{biganalytics}, \pkg{synchronicity}, \pkg{bigtabulate}, -and \pkg{bigalgebra} bridge this gap, implementing massive matrices -and supporting their manipulation and exploration. -The data structures may be allocated to shared memory, allowing separate -processes on the same computer to share access to a single copy of the -data set. The data structures may also be file-backed, allowing users -to easily manage and analyze data sets larger than available RAM and -share them across nodes of a cluster. -These features of the Bigmemory Project open the door for powerful and -memory-efficient parallel analyses and data mining of massive data sets, -even on modest hardware. -\end{quotation} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\vspace*{0.5cm} -\noindent -{\bf Introductory Example: the 2009 JSM Data Expo} -\vspace*{0.5cm} - -Consider the complete airline on-time performance data -from the 2009 JSM Data Expo. The processed data set, \texttt{airline.csv}, -is approximately 11 GB (about 120 million rows and 29 columns) -with factors coded as integers (see \url{http://www.bigmemory.org/} for -processing information). -The \texttt{read.big.matrix()} call creates the binary -file-backing \texttt{airline.bin} -associated with the \texttt{big.matrix} object \texttt{x}. -Subsequent \proglang{R} sessions can attach instantly to \texttt{airline.bin} -without incurring the one-time overhead (about 25 minutes) -associated with creating the backing. -A summary of the entire data set is easily obtained using the new -\texttt{summary()} method. Note the surprising -presence of negative arrival and departure delays: exploratory data analysis -in action via \pkg{bigmemory}. The summary -only takes 3-4 minutes to process the 11 GB of data on a laptop with only -4 GB of RAM. -<>= -library(bigmemory) -library(biganalytics) -x <- read.big.matrix("airline.csv", type="integer", header=TRUE, - backingfile="airline.bin", - descriptorfile="airline.desc", - extraCols="Age") -summary(x) - -# min max mean NA's -#Year 1987 2008 1998.62 0 -#Month 1 12 6.55 0 -#DayofMonth 1 31 15.72 0 -#DayOfWeek 1 7 3.94 0 -#ArrDelay -1437 2598 7.05 2587529 -#DepDelay -1410 2601 8.17 2302136 -#... (other variables omitted here) ... -@ - - -\noindent -{\bf Overview} -\vspace*{0.5cm} - -Data frames and matrices in \proglang{R} are easy to use, -with typical manipulations executing quickly on -data sets much smaller than available RAM. They suit the needs of many -\proglang{R} users and work seamlessly with existing \proglang{R} functions -and packages. However, problems arise with larger data sets and when -increased memory requirements of parallel programming strain the system. - -The Bigmemory Project offers packages -for two purposes. First, \pkg{bigmemory}, \pkg{biganalytics}, and -\pkg{bigtabulate} have been designed to provide a minimalist, -elegant framework for users to manage and explore large data sets, even -on modest hardware (expensive workstations or clusters are not required). -The interface is designed to mimic \proglang{R}'s familiar \code{matrix} -syntax. Matthew Keller, Assistant Professor of -Psychology, University of Colorado at Boulder offered the following -testimonial about \pkg{bigmemory}: ``I love that it's intuitive and -doesn't require a lot of learning new ways to code things.'' - -Second, the packages of the Bigmemory Project provide a foundation for -memory-efficient parallel programming and can serve as building blocks -for developers of new high-performance computing tools in \proglang{R}. -When used in conjunction with a parallel package (such as \pkg{foreach}, -\pkg{snow}, \pkg{Rmpi}, or \pkg{multicore}, for example), -even shared-memory parallel-computing becomes -accessible to non-experts. -The programming interface is stable, and offers the flexibility to support -the development of -algorithms working seamlessly on both \texttt{big.matrix} and traditional -\texttt{matrix} objects. For examples of this, look first -at the function \texttt{mwhich()}; it offers flexible \texttt{which()}-like -functionality that is computationally efficient and avoids memory overhead. -In addition, all the functions provided by \pkg{bigtabulate} may be used -with \texttt{matrix} and \texttt{big.matrix} objects alike. - -\vspace*{0.5cm} -\noindent -{\bf Underneath the Hood of the Bigmemory Project} -\vspace*{0.5cm} - -The packages of the Bigmemory Project use the Boost Interprocess -\proglang{C++} library to provide platform-independent support for -massive matrices that may be shared across \proglang{R} processes. -Innovative use of \proglang{C++} accessors supports matrices of -\texttt{double}, \texttt{integer}, \texttt{short}, and \texttt{char}, -as well as the development of algorithms working seamlessly on -\texttt{big.matrix} objects or traditional \proglang{R} matrices. - -\vspace*{0.5cm} -\noindent -{\bf Example: Airplane Ages and Parallel Processing} -\vspace*{0.5cm} - -We would like to approximate the age of each plane at the time of -each flight. This first requires calculation of an approximate -``birthmonth'' for each plane: the month of the first -appearance in the data set. Given a matrix -\texttt{y} containing \texttt{Year} and \code{Month} for all flights -of a given plane, \texttt{birthmonth(y)} returns the -month (in months AD) of the earliest flight: -<>= -birthmonth <- function(y) { - minYear <- min(y[,'Year'], na.rm=TRUE) - these <- which(y[,'Year']==minYear) - minMonth <- min(y[these,'Month'], na.rm=TRUE) - return(12*minYear + minMonth - 1) -} -@ -A traditional approach to calculating all the birthmonths might use a \code{for()} loop: -<>= -allplanes <- unique(x[,'TailNum']) -planeStart <- rep(0, length(allplanes)) -for (i in allplanes) { - planeStart[i] <- birthmonth( x[mwhich(x, 'TailNum', i, 'eq'), - c('Year', 'Month'), drop=FALSE] ) -} -@ -With about 13,000 flights this takes about 9 hours, even with the relative -fast and memory-efficient use of \texttt{mwhich()}. - -A far more efficient alternative is to first obtain a list of row indices -for each plane: -<>= -library(bigtabulate) -planeindices <- bigsplit(x, 'TailNum') -@ -Here, the use of the new function \code{bigsplit()} is equivalent to -<>= -planeindices <- split(1:nrow(x), x[,'TailNum']) -@ -but is faster (16 versus 29 seconds) and more memory efficient (with -peak memory usage of 2 versus 3 GB). -Either way, -\texttt{planeindices[i]} contains all row indices corresponding to flights -with \texttt{TailNum} equal to \texttt{i}. This requires several hundred MB, -but is computationally more efficient in this problem. For example, -\texttt{planeindices} may be used with \code{sapply()} in the obvious way, -completing the task in a mere 30 seconds: -<>= -planeStart <- sapply(planeindices, - function(i) birthmonth(x[i, c('Year','Month'), - drop=FALSE])) -@ - -The looping structure \texttt{foreach()} of package \pkg{foreach} -can be a powerful and flexible alternative to \texttt{for()} or -functions like -\texttt{lapply()} and \texttt{sapply()}. It can also -take advantage of the shared-memory -capability of \pkg{bigmemory}. Package \pkg{doMC} provides one of several -available ``parallel backends'' for the function \texttt{foreach()}, allowing -the work to be automatically distributed to available processor cores: -<>= -library(doMC) -registerDoMC(cores=2) -planeStart <- foreach(i=planeindices, .combine=c) %dopar% { - return(birthmonth(x[i, c('Year','Month'), drop=FALSE])) -} -@ -The syntax of a \code{foreach()} loop is slightly different from the -syntax of a traditional loop, but its benefits are clear: -in this example, it takes only 14 seconds -to calculate the plane birthmonths using two processor cores.\footnote{We -should note that \pkg{doMC} and \pkg{multicore} are particularly well-suited -for this. When other parallel backends are used, one additional command is -required in the \code{birthmonth()} function: \code{x <- attach.big.matrix(xdesc)} -where \code{xdesc <- describe(x)} would be required just prior to the -\code{foreach()} loop, providing explicit shared-memory access across processes. -In contrast, \code{multicore} automatically operates on shared memory, -avoiding the need for this extra step.} -Both cores share access to the same master copy -of the airline data (with \texttt{Year} and \texttt{Month} cached in RAM); -individual calls to \texttt{birthmonth()} are relatively small in size. -Without the \texttt{registerDoMC()} -initialization, the \code{foreach()} loop would run on a single processor core, much -like \code{sapply()}, but taking about 24 seconds in this problem -with lower memory overhead than \code{sapply()}. - -Finally, the plane ages at the time of all flights may be calculated: -<>= -x[,'Age'] <- x[,'Year']*as.integer(12) + - x[,'Month'] - as.integer(planeStart[x[,'TailNum']]) -@ -This arithmetic is conducted on \proglang{R} vectors extracted from -the \code{big.matrix}; use of -\code{as.integer()} helps keep the memory consumption under control. - -\vspace*{0.5cm} -\noindent -{\bf Concluding Example: a Big Regression} -\vspace*{0.5cm} - -In addition to providing basic functions for exploratory data analysis, the -package \pkg{biganalytics} provides a wrapper for Thomas Lumley's -\pkg{biglm} package, supporting massive -linear and generalized linear models.\footnote{Package \pkg{biganalytics} -also provides \code{bigkmeans()}, and other analytics may be added to the -package in the future.} The following toy example examines -the airline arrival delays as a linear function of the age of the plane -at the time of the flight and the year of the flight. About 85 million -flights are used (because of missing airplane tailcodes). -We estimate that use of \proglang{R}'s \texttt{lm()} -function would require more than 10 GB of RAM of memory overhead, while -this example runs in about 3 minutes with only several hundred MB of memory -overhead. -<>= -blm <- biglm.big.matrix(ArrDelay ~ Age + Year, data=x) -summary(blm) -@ -<>= -#Large data regression model: biglm(formula = formula, data = data, ...) -#Sample size = 84216580 -# Coef (95% CI) SE p -#(Intercept) 91.6149 87.6509 95.5789 1.9820 0 -#Age 0.0144 0.0142 0.0146 0.0001 0 -#Year -0.0424 -0.0444 -0.0404 0.0010 0 -@ -From this, we might conclude that older planes are associated with increased predicted -delays, and predicted delays in recent years are lower. However, this -exercise is merely for illustrative purposes; a serious study of airline delays would -quickly reject this oversimplification and discover problems with this particular -regression. - -\vspace*{0.5cm} -\noindent -{\bf Additional Information and Supporting Material} -\vspace*{0.5cm} - -These examples were tested both in Linux 64-bit and Windows 7 Enterprise 64-bit -environments. -Older versions of Windows operating systems (including Vista 64-bit) seem -to suffer from extremely inefficient caching behavior with filebackings and -are not recommended for use with -\pkg{bigmemory}; 32-bit environments will be limited by approximately 2 GB -of addressable memory. - -The packages are available via R-Forge and on CRAN as of -late April, 2010; please see -\url{http://www.bigmemory.org/} for more information. -There is a short vignette available in the Documentation area, -as well as presentation slides introducing \pkg{bigmemory} -and providing some benchmarks and shared-memory parallel programming -examples. Please do not use the older version of \pkg{bigmemory} -archived on CRAN (versions <= 3.12). - -\newpage - -\noindent -{\bf Citations} -\vspace*{0.5cm} - -\begin{enumerate} -\item The Bigmemory Project, \url{http://www.bigmemory.org/}, the home of \proglang{R} packages -\pkg{bigmemory}, \pkg{biganalytics}, \pkg{bigtabulate}, \pkg{bigalgebra}, and -\pkg{synchronicity}. Packages available from CRAN or R-Forge. - -\item 2009 JSM Data Expo: Airline on-time performance. \url {http://stat-computing.org/dataexpo/2009/}. - -\item Thomas Lumley (2009). \pkg{biglm}: bounded memory linear and generalized - linear models. \proglang{R} package version 0.7, - \url{http://CRAN.R-project.org/package=biglm}. - -\item \proglang{R} Development Core Team (2009). \proglang{R}: A language and environment for - statistical computing. \proglang{R} Foundation for Statistical Computing, - Vienna, Austria. ISBN 3-900051-07-0, \url{http://www.R-project.org}. - -\item Luke Tierney, A. J. Rossini, Na Li and H. Sevcikova (). \pkg{snow}: Simple - Network of Workstations. \proglang{R} package version 0.3-3, - \url{http://CRAN.R-project.org/package=snow}. - -\item Simon Urbanek (2009). \pkg{multicore}: Parallel processing of \proglang{R} code on - machines with multiple cores or CPUs. \proglang{R} package version 0.1-3, - \url{http://www.rforge.net/multicore/}. - -\item Stephen Weston and REvolution Computing (2009). \pkg{doMC}: Foreach parallel adaptor for the - \pkg{multicore} package. \proglang{R} package version 1.2.0, - \url{http://CRAN.R-project.org/package=doMC}. - -\item Stephen Weston and REvolution Computing (2009). \pkg{foreach}: Foreach looping -construct for \proglang{R}. \proglang{R} package version 1.3.0, -\url{http://CRAN.R-project.org/package=foreach}. - -\item Hao Yu (2010). \pkg{Rmpi}: Interface (Wrapper) to MPI (Message-Passing Interface). - \proglang{R} package version 0.5-8, \url{http://www.stats.uwo.ca/faculty/yu/Rmpi}. -\end{enumerate} - - -%\end{raggedright} - -\end{document}