[R] Documentation on how to put classes and methods in packages with namespace?

Uwe Ligges ligges at statistik.uni-dortmund.de
Tue Mar 16 13:51:27 CET 2004


Jens Henrik Badsberg wrote:

>  Documentation on how to put classes and methods in packages with namespace?
> 
>  How should I define my classes and methods in "dynamicGraph"???


Jens Henrik,

without reading all the lines below, I'd like to point you to the 
"Writing R Extensions" manual of R-devel (1.9.0 alpha), which includes 
some lines on handling S4 classes/methods in Namespaces.

Uwe




>  (That is - Can some one point me to the documentation on
>  how to put classes and methods in packages with a namespace? )
> 
>  Currently it is done by the code below.
> 
>  This gives problems, when a workspace with a "dynmaicGraph" is restored:
> 
>  1. run:
> 
>      local({a <- CRAN.packages()
>      install.packages(select.list(a[,1],,TRUE), .libPaths()[1], available=a)})
>      search()
>      library(dynamicGraph)
>      a <- DynamicGraph(1:10)
>      search()
>      ls(pos=3, all.names=TRUE)
>      history()
>      q(save="yes")
> 
>  2. run:
> 
>      search()
>      ls()
>      library(dynamicGraph)
>      search()
>      ls(pos=3, all.names=TRUE)
>      b <- DynamicGraph(1:10)
>      history()
> 
>  The classes and methods of dynamicGraph is not assigned, see the attached "run2.txt",
>  and compare with the list of the objects of dynamicGraph in "run1.txt".
> 
>  I have experimented with the argument "where" to setClass, etc., see the attached
>  "onLoad.R".
> 
>  Regards,
> 
>  Jens Henrik Badsberg
> 
> 
> 
> ".onAttach" <-
> function (lib, pkg) 
> {
>     require(tcltk)
> }
> ".onLoad" <-
> function (lib, pkg) 
> {
>     .onLoad.dynamicGraph()
> }
> ".onLoad.dynamicGraph" <-
> function () 
> {
>     library(methods)
>     setClass("GraphLatticeProto", representation(vertices = "list", 
>         blocks = "list", blockTree = "list", graphs = "list"))
>     setClass("CanvasProto", representation(top = "tkwin", canvas = "tkwin", 
>         tags = "list", id = "numeric", visibleVertices = "numeric", 
>         graphEdges = "list", blockEdges = "list", factorVertices = "list", 
>         factorEdges = "list"))
>     setClass("NodeProto", representation(color = "character", 
>         label = "character", label.position = "numeric"), prototype(color = "black", 
>         label = "Label", label.position = c(0, 0, 0)))
> 
>     ### .... Many lines deleted ....
> 
>     if (!isGeneric("label")) {
>         if (is.function("label")) 
>             fun <- label
>         else fun <- function(object) standardGeneric("label")
>         setGeneric("label", fun)
>     }
>     setMethod("label", "NodeProto", function(object) object at label)
>     setGeneric("label<-", function(x, value) standardGeneric("label<-"))
>     setReplaceMethod("label", "NodeProto", function(x, value) {
>         x at label <- value
>         x
>     })
> 
>     ### .... Many lines deleted ....
> 
> }
>  <<run1.txt>>  <<run2.txt>>  <<onLoad.R>> 
> 
> 
> ------------------------------------------------------------------------
> 
> 
> 
> local({a <- CRAN.packages()
> install.packages(select.list(a[,1],,TRUE), .libPaths()[1], available=a)})
> search()
> library(dynamicGraph)
> a <- DynamicGraph(1:10)
> search()
> ls(pos=3, all.names=TRUE)
> history()
> q(save="yes")
> 
> 
> 
> R : Copyright 2003, The R Foundation for Statistical Computing
> Version 1.8.1  (2003-11-21), ISBN 3-900051-00-3
> 
> R is free software and comes with ABSOLUTELY NO WARRANTY.
> You are welcome to redistribute it under certain conditions.
> Type 'license()' or 'licence()' for distribution details.
> 
> R is a collaborative project with many contributors.
> Type 'contributors()' for more information and
> 'citation()' on how to cite R in publications.
> 
> Type 'demo()' for some demos, 'help()' for on-line help, or
> 'help.start()' for a HTML browser interface to help.
> Type 'q()' to quit R.
> 
> 
>>local({a <- CRAN.packages()
> 
> + install.packages(select.list(a[,1],,TRUE), .libPaths()[1], available=a)})
> trying URL `http://cran.r-project.org/bin/windows/contrib/1.8/PACKAGES'
> Content type `text/plain; charset=iso-8859-1' length 16234 bytes
> opened URL
> downloaded 15Kb
> 
> trying URL `http://cran.r-project.org/bin/windows/contrib/1.8/dynamicGraph_0.1.5.9.9.8.8.zip'
> Content type `application/zip' length 347067 bytes
> opened URL
> downloaded 338Kb
> 
> package  dynamicGraph  successfully unpacked and MD5 sums checked
> 
> Delete downloaded files (y/N)? y
> 
> updating HTML package descriptions
> 
>>search()
> 
> [1] ".GlobalEnv"      "package:methods" "package:ctest"   "package:mva"    
> [5] "package:modreg"  "package:nls"     "package:ts"      "Autoloads"      
> [9] "package:base"   
> 
>>library(dynamicGraph)
> 
> Loading required package: tcltk 
> 
>>a <- DynamicGraph(1:10)
>>search()
> 
>  [1] ".GlobalEnv"           "package:tcltk"        "package:dynamicGraph"
>  [4] "package:methods"      "package:ctest"        "package:mva"         
>  [7] "package:modreg"       "package:nls"          "package:ts"          
> [10] "Autoloads"            "package:base"        
> 
>>ls(pos=3, all.names=TRUE)
> 
>   [1] ".__C__BlockEdgeProto"                   ".__C__BlockProto"                      
>   [3] ".__C__CanvasProto"                      ".__C__ContinuousVertexProto"           
>   [5] ".__C__defaultModelObjectProto"          ".__C__defaultTestObjectProto"          
>   [7] ".__C__DiscreteGeneratorProto"           ".__C__DiscreteVertexProto"             
>   [9] ".__C__EdgeProto"                        ".__C__FactorEdgeProto"                 
>  [11] ".__C__FactorVertexProto"                ".__C__GeneratorProto"                  
>  [13] ".__C__GraphLatticeProto"                ".__C__LinearGeneratorProto"            
>  [15] ".__C__NodeProto"                        ".__C__OrdinalVertexProto"              
>  [17] ".__C__QuadraticGeneratorProto"          ".__C__VertexEdgeProto"                 
>  [19] ".__C__VertexProto"                      ".__M__addToPopups:dynamicGraph"        
>  [21] ".__M__ancestors:dynamicGraph"           ".__M__ancestors<-:dynamicGraph"        
>  [23] ".__M__color:dynamicGraph"               ".__M__color<-:dynamicGraph"            
>  [25] ".__M__Colors:dynamicGraph"              ".__M__Colors<-:dynamicGraph"           
>  [27] ".__M__descendants:dynamicGraph"         ".__M__descendants<-:dynamicGraph"      
>  [29] ".__M__draw:dynamicGraph"                ".__M__edgeLabel:dynamicGraph"          
>  [31] ".__M__edgeLabel<-:dynamicGraph"         ".__M__edgeWidth:dynamicGraph"          
>  [33] ".__M__edgeWidth<-:dynamicGraph"         ".__M__index:dynamicGraph"              
>  [35] ".__M__index<-:dynamicGraph"             ".__M__Indices:dynamicGraph"            
>  [37] ".__M__label:dynamicGraph"               ".__M__label<-:dynamicGraph"            
>  [39] ".__M__labelOfEdge:dynamicGraph"         ".__M__labelOfEdge<-:dynamicGraph"      
>  [41] ".__M__labelPosition:dynamicGraph"       ".__M__labelPosition<-:dynamicGraph"    
>  [43] ".__M__LabelPositions:dynamicGraph"      ".__M__LabelPositions<-:dynamicGraph"   
>  [45] ".__M__Labels:dynamicGraph"              ".__M__Labels<-:dynamicGraph"           
>  [47] ".__M__name:dynamicGraph"                ".__M__name<-:dynamicGraph"             
>  [49] ".__M__Names:dynamicGraph"               ".__M__Names<-:dynamicGraph"            
>  [51] ".__M__NodeAncestors:dynamicGraph"       ".__M__NodeAncestors<-:dynamicGraph"    
>  [53] ".__M__NodeDescendants:dynamicGraph"     ".__M__NodeDescendants<-:dynamicGraph"  
>  [55] ".__M__nodeIndices:dynamicGraph"         ".__M__NodeIndices:dynamicGraph"        
>  [57] ".__M__nodeIndices<-:dynamicGraph"       ".__M__nodeIndicesOfEdge:dynamicGraph"  
>  [59] ".__M__nodeIndicesOfEdge<-:dynamicGraph" ".__M__NodeTypes:dynamicGraph"          
>  [61] ".__M__nodeTypesOfEdge:dynamicGraph"     ".__M__oriented:dynamicGraph"           
>  [63] ".__M__Oriented:dynamicGraph"            ".__M__oriented<-:dynamicGraph"         
>  [65] ".__M__Oriented<-:dynamicGraph"          ".__M__position:dynamicGraph"           
>  [67] ".__M__position<-:dynamicGraph"          ".__M__Positions:dynamicGraph"          
>  [69] ".__M__Positions<-:dynamicGraph"         ".__M__Strata:dynamicGraph"             
>  [71] ".__M__Strata<-:dynamicGraph"            ".__M__stratum:dynamicGraph"            
>  [73] ".__M__stratum<-:dynamicGraph"           ".__M__visible:dynamicGraph"            
>  [75] ".__M__Visible:dynamicGraph"             ".__M__visible<-:dynamicGraph"          
>  [77] ".__M__Visible<-:dynamicGraph"           ".__M__width:dynamicGraph"              
>  [79] ".__M__width<-:dynamicGraph"             ".__M__widthOfEdge:dynamicGraph"        
>  [81] ".__M__widthOfEdge<-:dynamicGraph"       ".__M__Widths:dynamicGraph"             
>  [83] ".__M__Widths<-:dynamicGraph"            ".onLoad.dynamicGraph"                  
>  [85] ".onLoad.dynamicGraphInterface"          "addToPopups"                           
>  [87] "ancestors"                              "ancestors<-"                           
>  [89] "blockTreeToList"                        "color"                                 
>  [91] "color<-"                                "Colors"                                
>  [93] "Colors<-"                               "descendants"                           
>  [95] "descendants<-"                          "draw"                                  
>  [97] "DynamicGraph"                           "dynamicGraphMain"                      
>  [99] "edgeLabel"                              "edgeLabel<-"                           
> [101] "edgeWidth"                              "edgeWidth<-"                           
> [103] "index"                                  "index<-"                               
> [105] "Indices"                                "label"                                 
> [107] "label<-"                                "labelOfEdge"                           
> [109] "labelOfEdge<-"                          "labelPosition"                         
> [111] "labelPosition<-"                        "LabelPositions"                        
> [113] "LabelPositions<-"                       "Labels"                                
> [115] "Labels<-"                               "modalDialog"                           
> [117] "name"                                   "name<-"                                
> [119] "Names"                                  "Names<-"                               
> [121] "nameToVertexIndex"                      "newBlock"                              
> [123] "newBlockEdge"                           "newDefaultModelObject"                 
> [125] "newDefaultTestObject"                   "newFactor"                             
> [127] "newFactorEdge"                          "newVertex"                             
> [129] "newVertexEdge"                          "NodeAncestors"                         
> [131] "NodeAncestors<-"                        "NodeDescendants"                       
> [133] "NodeDescendants<-"                      "nodeIndices"                           
> [135] "NodeIndices"                            "nodeIndices<-"                         
> [137] "nodeIndicesOfEdge"                      "nodeIndicesOfEdge<-"                   
> [139] "NodeTypes"                              "nodeTypesOfEdge"                       
> [141] "oriented"                               "Oriented"                              
> [143] "oriented<-"                             "Oriented<-"                            
> [145] "position"                               "position<-"                            
> [147] "Positions"                              "Positions<-"                           
> [149] "returnBlockEdgeList"                    "returnEdgeList"                        
> [151] "returnFactorEdgeList"                   "returnFactorVerticesAndEdges"          
> [153] "returnVertexList"                       "setBlocks"                             
> [155] "setTreeBlocks"                          "Strata"                                
> [157] "Strata<-"                               "stratum"                               
> [159] "stratum<-"                              "validFactorClasses"                    
> [161] "validVertexClasses"                     "visible"                               
> [163] "Visible"                                "visible<-"                             
> [165] "Visible<-"                              "width"                                 
> [167] "width<-"                                "widthOfEdge"                           
> [169] "widthOfEdge<-"                          "Widths"                                
> [171] "Widths<-"                              
> 
>>history()
>>q(save="yes")
> 
> 
> 
> ------------------------------------------------------------------------
> 
> search()
> ls()
> library(dynamicGraph)
> search()
> ls(pos=3, all.names=TRUE)
> b <- DynamicGraph(1:10)
> history()
> 
> 
> Type 'demo()' for some demos, 'help()' for on-line help, or
> 'help.start()' for a HTML browser interface to help.
> Type 'q()' to quit R.
> 
> [Previously saved workspace restored]
> 
> 
>>search()
> 
> [1] ".GlobalEnv"      "package:ctest"   "package:mva"     "package:modreg"  "package:nls"    
> [6] "package:ts"      "package:methods" "Autoloads"       "package:base"   
> 
>>ls()
> 
> [1] "a"
> 
>>library(dynamicGraph)
> 
> Loading required package: tcltk 
> 
>>search()
> 
>  [1] ".GlobalEnv"           "package:tcltk"        "package:dynamicGraph"
>  [4] "package:ctest"        "package:mva"          "package:modreg"      
>  [7] "package:nls"          "package:ts"           "package:methods"     
> [10] "Autoloads"            "package:base"        
> 
>>ls(pos=3, all.names=TRUE)
> 
>  [1] ".onLoad.dynamicGraph"          ".onLoad.dynamicGraphInterface"
>  [3] "blockTreeToList"               "DynamicGraph"                 
>  [5] "dynamicGraphMain"              "modalDialog"                  
>  [7] "nameToVertexIndex"             "newBlock"                     
>  [9] "newBlockEdge"                  "newDefaultModelObject"        
> [11] "newDefaultTestObject"          "newFactor"                    
> [13] "newFactorEdge"                 "newVertex"                    
> [15] "newVertexEdge"                 "returnBlockEdgeList"          
> [17] "returnEdgeList"                "returnFactorEdgeList"         
> [19] "returnFactorVerticesAndEdges"  "returnVertexList"             
> [21] "setBlocks"                     "setTreeBlocks"                
> [23] "validFactorClasses"            "validVertexClasses"           
> 
>>b <- DynamicGraph(1:10)
> 
> Error in getClass(superClass) : "NodeProto" is not a defined class
> 
>>history()
>>q()
>>
>>
>>------------------------------------------------------------------------
>>
>>______________________________________________
>>R-help at stat.math.ethz.ch mailing list
>>https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>>PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html




More information about the R-help mailing list