Thanks, David. By going through the code, I came to a similar conclusion also: it seems the match.2.list function must be modified in the following way to make it work:
match.2.list <- function(l1,l2){ if (class(l1)=="element"){ l1 <- l1[[1]] l2 <- l2[[1]] } length(l1)==length(l2) } because depending whether it is called from the constructor or from the %e% function, the assumptions about the input types are not the same. And also, if instead of working with "standard" objects, I want to work with S4 / refClass objects, I cannot build cset objects, because I have to go first with the set construction which prompts an error: Error in as.vector(x, "character") : cannot coerce type 'environment' to vector of type 'character' So far, I don't know how to work around this latter issue. Thanks again for the package and your help. Regards Johnny On Sat, Oct 8, 2011 at 2:40 PM, David Meyer <mey...@technikum-wien.at>wrote: > Dear Johnny, > > this is a bug in the hashing-code of sets. Use: > > > sets_options("hash", FALSE) > lset <- cset(s, matchfun = matchfun(match.2.list)) > > which will work. > > Thanks for pointing this out! > > David > > ---------------- > > Hi, > > I tried to use the sets package yesterday, which seems to be a very > powerful > package: thanks to the developers. I wanted to define sets of lists where 2 > lists are considered equal if they have the same length. > So, I implemented: > > match.2.list <- function(l1,l2){ > length(l1)==length(l2) > } > > and then defined my cset as: > > s <- set(list(1,2),list(3,4)) > lset <- cset(s,matchfun(match.2.list)) > > so if I now do: > y <- list(3,4) > y %e% lset > > I get the correct answer, which is TRUE. > > But if I do: > x <- list(1,8) > x %e% lset > > I now get FALSE, even though x is a list of length 2, and should thus match > any of the 2 lists in lset. > > I must be doing something wrong; I checked with the doc, but I don't > understand. > > -- > Priv.-Doz. Dr. David Meyer > Institut für Wirtschaftsinformatik > > Fachhochschule Technikum Wien > Höchstädtplatz 5, 1200 Wien > T: +43 1 333 40 77-394 > F: +43 1 333 40 77-99 394 > E: david.me...@technikum-wien.at > I: www.technikum-wien.at > > [[alternative HTML version deleted]]
______________________________________________ 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.