You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -50,7 +50,7 @@ Effective memory structures for relational data within \proglang{R} must be capa
50
50
\SweaveOpts{concordance=TRUE}
51
51
52
52
PLEASE NOTE: This document has been modified from the original paper to form a package vignette. It has been compiled with the version of the network package it is bundled with, and has been partially updated to reflect some changes in the package. The original paper is:\\
53
-
\pkg{network}: A Package for Managing Relational Data in \proglang{R}. \emph{Journal of Statistical Software} 24:2, 2008. \url{http://www.jstatsoft.org/v24/i02/paper}
53
+
\pkg{network}: A Package for Managing Relational Data in \proglang{R}. \emph{Journal of Statistical Software} 24:2, 2008. \url{https://www.jstatsoft.org/htaccess.php?volume=24&type=i&issue=02&filename=paper}
While the functionality described thus far has been aimed at users working within an interpreted \proglang{R} environment, many \pkg{network} package features can also be accessed through a \proglang{C}-language application programming interface (API). Although this API still makes use of \proglang{R} data structures, it provides mechanisms for direct manipulation of those structures via compiled code. While invisible to most end users, the API has a number of attractions for developers. Chief among these is performance: in the author's experience, a reasonably well-designed \proglang{C} function can run as much as one to two orders of magnitude faster than an equivalent \proglang{R} implementation. For many day-to-day applications, such gains are unlikely to be worth the considerable increase in implementation and maintenance costs associated with choosing \proglang{C} over \proglang{R}; however, they may prove vital when performing computationally demanding tasks such as Markov chain Monte Carlo simulation, large-graph computations, and small-N solutions for non-polynomial time problems (e.g., cycle counting). Another useful feature of the \proglang{C} API is its ability to make the complex data storage capabilities of \code{network} objects accessible to developers whose projects involve existing backend code, or developing packages such as \pkg{networkDynamic} which extend \pkg{network}'s functionality at the \proglang{C} level. Instead of performing data extraction on a \code{network} object and passing the result to the compiled routine, the \pkg{network} API allows for such routines to work with such objects directly. Finally, a third useful asset of the \pkg{network} API is the capacity it provides for generating user-transparent functionality which transcends what is feasible with \proglang{R}'s pass-by-value semantics. The use of compiled code to directly modify objects without copying has been fundamental to the functionality of the package since version 1.0, as can be gleaned from an examination of the package source code\footnote{The pass-by-value semantics are somewhat contrary to R's design philosophy and have been somewhat blocked in recent R versions. While the pass-by-value semantics functionality described is still operational, it must be implemented in less than optimal ways and my not offer the original speed gains.}.
587
587
588
-
The mechanism by which the API is currently implemented is fairly simple. A shared header file (which must be included in the user's application) defines a series of macros which point to the package's internal routines. During program execution, a global registration function is used to map these macros to their internal symbols; following this, the macros may be called normally. Other then ensuring that the \pkg{network} library is loaded prior to invoking the registration function, no other measures are necessary. In particular, the calling routine does not have to be linked against the \pkg{network} library, although the aforementioned header/registration routines must be included at compile time.\footnote{Required files for the \pkg{network} API are available from \url{http://www.statnetproject.org/}.}
588
+
The mechanism by which the API is currently implemented is fairly simple. A shared header file (which must be included in the user's application) defines a series of macros which point to the package's internal routines. During program execution, a global registration function is used to map these macros to their internal symbols; following this, the macros may be called normally. Other then ensuring that the \pkg{network} library is loaded prior to invoking the registration function, no other measures are necessary. In particular, the calling routine does not have to be linked against the \pkg{network} library, although the aforementioned header/registration routines must be included at compile time.\footnote{Required files for the \pkg{network} API are available from \url{https://www.statnetproject.org/}.}
589
589
590
-
In addition, \pkg{network} versions 1.11.1 and higher implement \proglang{R}'s template for registering native \proglang{C} routines \footnote{See the `Registering-native-routines' section of \url{http://cran.r-project.org/doc/manuals/r-release/R-exts.html }} so that packages may compile against \pkg{network}'s code by declaring a \code{LinkingTo: network} in the DESCRIPTION file. The listing of exported functions are in the file \code{src/Rinit.c}.
590
+
In addition, \pkg{network} versions 1.11.1 and higher implement \proglang{R}'s template for registering native \proglang{C} routines \footnote{See the `Registering-native-routines' section of \url{https://cran.r-project.org/doc/manuals/r-release/R-exts.html }} so that packages may compile against \pkg{network}'s code by declaring a \code{LinkingTo: network} in the DESCRIPTION file. The listing of exported functions are in the file \code{src/Rinit.c}.
591
591
592
592
\subsection[Using the network API]{Using the \pkg{network} API}
593
593
@@ -745,27 +745,27 @@ Batagelj V, Brandes U (2005). ``Efficient Generation of Large Random Networks.''
745
745
746
746
\bibitem[Batagelj(2007)]{pajek}
747
747
Batagelj V, Mrvar A (2007). \emph{Pajek: Package for Large Network Analysis.} University of
748
-
Ljubljana, Slovenia. URL \url{http://vlado.fmf.uni-lj.si/pub/networks/pajek/}.
748
+
Ljubljana, Slovenia. URL \url{http://mrvar.fdv.uni-lj.si/pajek/}.
749
749
750
750
\bibitem[Butts(2002)]{butts:tr:2002}
751
751
Butts CT (2002). ``Memory Structures for Relational Data in R: Classes and Interfaces.''
752
752
\emph{Unpublished manuscript}, University of California, Irvine.
753
753
754
754
\bibitem[Butts(2007)]{sna}
755
-
Butts CT (2007). \emph{sna: Tools for Social Network Analysis}. Statnet Project \url{http://statnetproject.org/}, Seattle, WA. R package version 1.5, URL \url{http://CRAN.R-project.org/package=sna}.
755
+
Butts CT (2007). \emph{sna: Tools for Social Network Analysis}. Statnet Project \url{https://statnetproject.org/}, Seattle, WA. R package version 1.5, URL \url{https://CRAN.R-project.org/package=sna}.
Butts CT, Carley KM (2005). ``Some Simple Algorithms for Structural Comparison.' \emph{Computational and Mathematical Organization Theory}, 11(4), 291-305.
759
759
760
760
\bibitem[Butts, et al.(2007)]{network}
761
761
Butts CT, Handcock MS, Hunter DR (2007). \emph{network: Classes for Relational Data}. Statnet
762
-
Project \url{http://statnetproject.org/}, Seattle, WA. R package version 1.3, URL \url{http://CRAN.R-project.org/package=network}.
762
+
Project \url{https://statnetproject.org/}, Seattle, WA. R package version 1.3, URL \url{https://CRAN.R-project.org/package=network}.
763
763
764
764
\bibitem[Butts, et all.(2014)]{networkDynamic}
765
-
Butts CT, Leslie-Cook A, Krivitsky P and Bender-deMoll S (2014). \emph{networkDynamic: Dynamic Extensions for Network Objects.} R package version 0.6.3. http://statnet.org URL \url{http://CRAN.R-project.org/package=networkDynamic}
765
+
Butts CT, Leslie-Cook A, Krivitsky P and Bender-deMoll S (2014). \emph{networkDynamic: Dynamic Extensions for Network Objects.} R package version 0.6.3. https://statnet.org URL \url{https://CRAN.R-project.org/package=networkDynamic}
766
766
767
767
\bibitem[Carey, et al.(2007)]{carey.et.al:sw:2007}
768
-
Carey VJ, Long L, Gentleman R (2007). \emph{RBGL: R Interface to Boost C++ Graph Library}. R package version 1.14.0, URL \url{http://www.bioconductor.org/}.
768
+
Carey VJ, Long L, Gentleman R (2007). \emph{RBGL: R Interface to Boost C++ Graph Library}. R package version 1.14.0, URL \url{https://www.bioconductor.org/}.
769
769
770
770
\bibitem[Chambers(1998)]{chambers:bk:1998}
771
771
Chambers JM (1998). \emph{Programming with Data}. Springer-Verlag, New York. ISBN 0-387-
Fruchterman TMJ, Reingold EM (1991). ``Graph Drawing by Force-directed Placement.' \emph{Software -- Practice and Experience}, 21(11), 1129-1164.
786
786
787
787
\bibitem[Gentleman, et al.(2007)]{gentleman.et.al:sw:2007}
788
-
Gentleman R, Whalen E, Huber W, Falcon S (2007). \emph{graph: A Package to Handle Graph Data Structures}. R package version 1.14.2, URL \url{http://CRAN.R-project.org/package=graph.}
788
+
Gentleman R, Whalen E, Huber W, Falcon S (2007). \emph{graph: A Package to Handle Graph Data Structures}. R package version 1.14.2, URL \url{https://www.bioconductor.org/packages/release/bioc/html/graph.html}.
789
789
790
790
\bibitem[Gentry, et al.(2007)]{gentry.et.al:sw:2007}
791
-
Gentry J, Long L, Gentleman R, Falcon S (2007). \emph{Rgraphviz: Plotting Capabilities for R Graph Objects}. R package version 1.16.0, URL \url{http://CRAN.R-project.org/package=Rgraphviz}.
791
+
Gentry J, Long L, Gentleman R, Falcon S (2007). \emph{Rgraphviz: Plotting Capabilities for R Graph Objects}. R package version 1.16.0, URL \url{https://CRAN.R-project.org/package=Rgraphviz}.
792
792
793
793
\bibitem[Handcock, et al.(2003)]{statnet}
794
794
Handcock MS, Hunter DR, Butts CT, Goodreau SM, Morris M (2003). \emph{statnet: Software Tools for the Statistical Modeling of Network Data}.
795
-
Statnet Project \url{http://statnetproject.org/}, Seattle, WA. R package version 2.0, URL \url{http://CRAN.
796
-
R-project.org/package=statnet}.
795
+
Statnet Project \url{https://statnetproject.org/}, Seattle, WA. R package version 2.0, URL \url{https://CRAN.R-project.org/package=statnet}.
Kamada T, Kawai S (1989). ``An Algorithm for Drawing General Undirected Graphs.''\emph{Information Processing Letters}, 31(1), 7-15.
@@ -803,7 +802,7 @@ Killworth PD, Bernard HR (1976). ``Informant Accuracy in Social Network Data.''
803
802
804
803
\bibitem[Koenker \& Ng(2007)]{koenker.ng:sw:2007}
805
804
Koenker R, Ng P (2007). \emph{SparseM: Sparse Linear Algebra}. R package version 0.73, URL
806
-
\url{http://CRAN.R-project.org/package=SparseM}.
805
+
\url{https://CRAN.R-project.org/package=SparseM}.
807
806
808
807
\bibitem[Krackhardt(1988)]{krackhardt:sn:1988}
809
808
Krackhardt D (1988). ``Predicting with Networks: Nonparametric Multiple Regression Anal-
@@ -814,7 +813,7 @@ Mayhew BH, Levinger RL (1976). ``Size and Density of Interaction in Human Aggreg
814
813
815
814
\bibitem[R Development Core Team(2007)]{R}
816
815
R Development Core Team (2007). \emph{R: A Language and Environment for Statistical Computing}. R Foundation for Statistical Computing, Vienna, Austria. ISBN 3-900051-07-0,
817
-
Version 2.6.1, URL \url{http://www.R-project.org/}.
816
+
Version 2.6.1, URL \url{https://www.R-project.org/}.
0 commit comments