On Tue, 30 Jun 2015, Rolf Turner wrote:
If you want a pointer to the correct syntax for subset(), try
help("subset")!!!
The syntax of your "extstream" function is totally screwed up, convoluted and
over-complicated. Note that even if you had your "subset" argument specified
correctly, the return() call will give you only the result from the *first*
pass through the for loop.
That aside, the error message is perfectly clear: 'subset' must be logical.
Your "subset" argument is "stream" which is a factor.
You *could* redefine your "extstream" function as follows:
function(alldf) {
sname <- levels(alldf$stream)
rslt <- vector("list",length(sname))
names(rslt) <- sname
for (i in sname) {
rslt[[i]] <- subset(alldf, alldf$stream==i, sampdate:quant)
}
rslt
}
However you don't need to go through such contortions:
split(testset,testset$stream)
will give essentially what you want. If you wish to strip out the redundant
"stream" column from the data frames in the resulting list, you could do that
using lapply()
Rolf,
I did re-read the subset man page, but did not associate the error message
with the problem.
Thanks very much for the lesson. I will read the split() man page; simple
is always better.
Regards,
Rich
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.