On Jul 1, 2011, at 7:44 PM, Marc Schwartz wrote:
On Jul 1, 2011, at 4:50 PM, David Winsemius wrote:
I would like to do some operations inside a function using only one
value for the last dimension of a table/matrix:
tabfn <- function (dfrm, facvec, YN ="event"){
return( Etbl <- do.call(table, dfrm[ , c(facvec,
"event") ]) )
# just want Etbl[,,,"TRUE"] or Etbl[,, "TRUE"] or
Etbl[,"TRUE"]
}
tbl <- tabfn(testdf, c("x", "y") )
tbl # all value of event returned
At the console it is easy for me to count the number of factors and
use the right number of commas
tbl[ , , "TRUE"] if I only want the slice with that value. How can
I do this programmatically?
Thnks.
David,
I had a vague recollection of something like this coming up at some
point in the past and it took me a bit to get the right keywords to
find it.
I did not realize how far back it was (2001), but here are two
possible solutions by Peter Dalgaard and Thomas Lumley from the same
thread:
https://stat.ethz.ch/pipermail/r-help/2001-October/016110.html
https://stat.ethz.ch/pipermail/r-help/2001-October/016122.html
It looks like Peter's solution is along the lines of the one that
you just posted.
Yeah. Thanks, Mark. Pretty much the same. Guess I'm in good company.
(Surprised this isn't asked more frequently.)
testdf <- data.frame(x=sample(letters[1:5], 25, replace=TRUE),
y=sample(letters[1:5], 25, replace=TRUE),
z=sample(letters[1:5], 25, replace=TRUE),
event=sample(c(TRUE, FALSE), 25, replace=TRUE) )
etbl <- table(testdf[ , c(c("x", "y"), "event")])
apply(etbl, seq(length=length(dim(etbl))-1),"[", 2) # Dalgaard 2001
apply(etbl, 1:(length(dim(etbl))-1), "[", 2) # Winsemius 2011
Any idea how to make it a "selection"? By that I mean how to select
values of the last dimension whose "event" values are "TRUE". I get
"Error: object 'event' not found" with any expression involving event,
since it is only an attribute in dimnames.
Hope that this helps.
Yes. At least there is nothing (yet) that I would call "truly
elegant". Maybe it's just that I stumbled on my solution, rather than
seeing it as a glaringly obvious application of apply(..., "[" , index)
Regards,
Sorry for the duplicate private message. Meant to hit reply to all.
Marc Schwartz
David Winsemius, MD
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.