On May 8, 2009, at 4:55 PM, Deepayan Sarkar wrote:
On Fri, May 8, 2009 at 1:30 PM, David Winsemius <dwinsem...@comcast.net
> wrote:
Took a bit of inspecting, looking at hidden functions, but this
seems to do
it:
library(lattice)
a <- c(1:10, 5:10)
b <- cbind(c(0,2.5,4.5,6.5), c(5.5,7.5,9.5,11))
c <- shingle(a, b)
summary(c, showValues=FALSE)
apply(as.matrix(levels(c)), 1, function(x) length(c[ c>= x[[1]][1]
& c <=
x[[1]][2] ]) )
#[1] 6 8 10 8
"apply" passes a list to the function which requires the "[["
operation
before the index. Since you did not create an example that
represents the
exceptions, i did not test for any such conditions. (Why do people
not
construct proper examples?)
Noting that
str(levels(c))
List of 4
$ : num [1:2] 0 5.5
$ : num [1:2] 2.5 7.5
$ : num [1:2] 4.5 9.5
$ : num [1:2] 6.5 11
- attr(*, "class")= chr "shingleLevel"
I would suggest the slightly simpler
sapply(levels(c), function(x) sum(x[1] <= c & c <= x[2]))
[1] 6 8 10 8
Much more readable. In looking at my trail of failed efforts, I see
that I came close but failed to realize that I was almost at:
sapply(as.matrix(levels(c)), function(x) length(c[ c>= x[1] & c <=
x[2] ]) )
... which also succeeds (as does your solution) in producing zeros
when no elements are in the intervals.
-Deepayan
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
______________________________________________
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.