Stefan Th. Gries
2008-Nov-21 00:15 UTC
[R] Pairwise intersect comparisons of list elements
Hi all I have two lists that have the same number of numeric vectors such as: q<-list(1, 2:3, 4:6, 7:10) w<-list(0, 1:2, 3:7, 8:10) What I want to do is create a vector desired.result that looks like this but I am thinking there must be some kind of non-loop / "\\wapply" way to so ... desired.result<-numeric() for (i in 1:4) desired.result[i]<-length(intersect(q[[i]], w[[i]])) desired.result Any ideas? Thx, STG
try this:> q<-list(1, 2:3, 4:6, 7:10) > w<-list(0, 1:2, 3:7, 8:10) > result <- sapply(seq(length(q)), function(.indx) length(intersect(q[[.indx]], w[[.indx]]))) > result[1] 0 1 3 3>On Thu, Nov 20, 2008 at 7:15 PM, Stefan Th. Gries <stgries at gmail.com> wrote:> Hi all > > I have two lists that have the same number of numeric vectors such as: > q<-list(1, 2:3, 4:6, 7:10) > w<-list(0, 1:2, 3:7, 8:10) > > What I want to do is create a vector desired.result that looks like > this but I am thinking there must be some kind of non-loop / > "\\wapply" way to so ... > > desired.result<-numeric() > for (i in 1:4) desired.result[i]<-length(intersect(q[[i]], w[[i]])) > desired.result > > Any ideas? Thx, > STG > > ______________________________________________ > R-help at 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. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?
yet another way:> mapply(function(x,y)length(intersect(x,y)), q, w)[1] 0 1 3 3 On Thu, Nov 20, 2008 at 7:15 PM, Stefan Th. Gries <stgries at gmail.com> wrote:> Hi all > > I have two lists that have the same number of numeric vectors such as: > q<-list(1, 2:3, 4:6, 7:10) > w<-list(0, 1:2, 3:7, 8:10) > > What I want to do is create a vector desired.result that looks like > this but I am thinking there must be some kind of non-loop / > "\\wapply" way to so ... > > desired.result<-numeric() > for (i in 1:4) desired.result[i]<-length(intersect(q[[i]], w[[i]])) > desired.result > > Any ideas? Thx, > STG > > ______________________________________________ > R-help at 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. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?