On 02/12/2011 11:08 AM, Shing Hing Man wrote: > Hi, > I am trying to create a linked list in R by defining a class Node which has > a instance variable Node. > > setClass("Node", representation(rate="numeric", nextNode="ANY")) > > The above works. But the following gives me a warning message. > setClass("Node", representation(rate="numeric", nextNode="Node")) > > >> >> setClass("Node", representation(rate="numeric", nextNode="ANY")) > [1] "Node" >> removeClass("Node") > [1] TRUE >> >> setClass("Node", representation(rate="numeric", nextNode="Node")) > [1] "Node" > Warning message: > undefined slot classes in definition of "Node": nextNode(class "Node") >> > > In the case when nextNode is type Node, is it possible to get ride of the > above "undefined slot classes" warning message ? > > > Thanks in advance for any assistance!
Hi Shing -- Not really an answer to your question, but I guess linked lists give you constant insert / linear search. The only data type in R with constant insert time is an environment. Environments map keys to values, with keys being character scalars. So (untested) setClass("Node",representation(next="character", value="ANY")) setClass("LinkedList", representation(store="environment", head="character"))) environments are tricky because of their pass-by-reference semantic, and to initialize the LinkedList class you'll want to write an initialize method that creates a new environment for each instance setMethod(initialize, "LinkedList", function(.Object, ..., store=new.env(parent=emptyenv())) { callNextMethod(.Object, ..., store=store) }) you'd then write methods on the LinkedList class to insert / delete / etc. Likely some new concepts in there but hopefully that helps... For the node values, creating S4 objects can be very expensive and if you are thinking of large linked lists that are frequently updated, you might do well either to use simple lists or vectors to represent the node values, or to rethink whether linked lists are what you need -- they're not a very friendly R data structure. And since the LinkedList class is based on an environment, it has reference semantics that will confuse R users. Martin > > Shing > > > > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. -- Computational Biology Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109 Location: M1-B861 Telephone: 206 667-2793 ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.