[R] data frame output
Hello list, Is there a way to *not* supress leading zeros when printing (to the console window or to a file) a dataframe? Thanks, =Randy= R. Zelick email: [EMAIL PROTECTED] Department of Biology voice: 503-725-3086 Portland State University fax: 503-725-3888 mailing: P.O. Box 751 Portland, OR 97207 shipping: 1719 SW 10th Ave, Room 246 Portland, OR 97201 __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] Why is rpart() so slow?
On Fri, 19-Mar-2004 at 04:44PM +1300, Richard A. O'Keefe wrote: |> I've had rpart running on a problem now for a couple of *days*, |> but I'd expect a decision tree builder to run in minutes if not |> seconds. Why is rpart slow? Is there anything I can do to make |> it quicker? Yes. You could give us an indication of just what you're trying to do, with what, and to what, so we would be in a position to say what improvements could be made. -- Patrick Connolly HortResearch Mt Albert Auckland New Zealand Ph: +64-9 815 4200 x 7188 ~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~ I have the world`s largest collection of seashells. I keep it on all the beaches of the world ... Perhaps you`ve seen it. ---Steven Wright ~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~ __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] Why is rpart() so slow?
I've had rpart running on a problem now for a couple of *days*, but I'd expect a decision tree builder to run in minutes if not seconds. Why is rpart slow? Is there anything I can do to make it quicker? __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] Frequency table
Hi, See if this generic function I made can help you. data <- c(65, 70, 85, 65, 65, 65, 62, 55, 82, 59, 55, 66, 74, 55, 65, 56, 80, 73, 45, 64, 75, 58, 60, 56, 60, 65, 53, 63, 72, 80, 90, 95, 55, 70, 79, 62, 57, 65, 60, 47, 61, 53, 80, 75, 72, 87, 52, 72, 80, 85, 75, 70, 84, 60, 72, 70, 76, 70, 79, 72, 69, 80, 62, 74, 54, 58, 58, 69, 81, 84) # begin options of table--- min <-40 max <- 100 h <- 10 #-- end options of table--- # begin declaration of variables--- Fi <- numeric(); FacA <- numeric(); FacP <- numeric(); FrA <- numeric(); FrP<- numeric() # end declaration of variables- #- begin function-- Createtable <- function() { Fi <<- table(cut(data, br = seq(min, max, h), right = FALSE)) K <- length(names(Fi)) n <- length(data) for(i in 1:K) { FrA[i] = Fi[i] / n } for(i in 1:K) { FrP[i] = (Fi[i] / n) * 100 } for(i in 1:K) { FacA[i] = sum(Fi[1:i]) } for(i in 1:K) { FacP[i] = (sum(Fi[1:i]) / n) * 100 } table <- data.frame(Fi, FrA, FrP, FacA, FacP) } #- end function-- tab <- Createtable() print("Complete table:") print(tab) José Cláudio Faria UESC/DCET Brasil 73-634.2779 [EMAIL PROTECTED] [EMAIL PROTECTED] __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] Incomplete Gamma Functions and GammaDistribution Doc errata.
Hello all, In the course of trying to implement the CDF of an InverseGammaDistribution, I have run across the need for an igamma() function. Several others have needed this function but the answers I have found so far are not totally clear to me. I'm writing for three reasons: 1) to present a small error in the docs 2) to clarify the approach we are expected to take 3) to request,for the ease of use of myself and others, that the R developers implement igamma(), document the approach they want users to take or do both. 1) An error in the docs of the gamma distribution: - The GammaDistribution(param1,param2) is defined alternatively with two versions of the second parameter which are inverses of one another. 'Rate' arises from one derivation such as that presented in Mathworld: http://mathworld.wolfram.com/GammaDistribution.html (see just below equation (2) ) "define $\theta \equiv 1 / \lambda$ to be the time between changes" which makes \theta in equation (3) a rate parameter. In the R documentation (i.e. ?pgamma) this same equation is presented but the parameter \theta is now called s and is termed the scale. This goes against general usage of mathworld, wikipaedia, the COLT library, and others who call the "s" term a "rate". Please either change the equation or replace the name with "rate" and the label with r or nu or theta. 2) Using existing functions to build the igamma(\alpha,\beta): - The incomplete gamma has been mentioned in two previous emails that I could find: http://www.r-project.org/nocvs/mail/r-help/2000/1006.html and http://www.r-project.org/nocvs/mail/r-help/2000/3618.html both of which suggest that the upper incomplete gamma can be obtained using the pgamma() function. Is Prof. Ripley's message (the first above) saying that upperIncompletegamma(x,\rate) = pgamma(x,\rate) * gamma(\rate) ? I have not yet been able to see why this would be true. I keep tripping myself up on the differing notation of R, mathworld, wikipaedia and Abramowitz and Stegun's "Handbook of mathematical functions". Would someone please confirm that this is mathematically correct? 3) Adding an igamma() function or documentation for how to generate it. Since I am at least the third person not clever enough to see the way to derive the igamma directly, because the lack of an igamma() function has cost me a chunk of my day, because using functions related to distributions to derive pure mathematical functions is counter intuitive, and because two implementations already exist, I hope the R developers would be willing to incorporate an igamma() function directly into R. The implementation could either use the code posted to the list: http://www.r-project.org/nocvs/mail/r-help/1998/0295.html or be a convinience function around the pgamma and gamma solution suggested in the emails presented above. Alternatively, if this approach doesn't suit you, would someone please add an explanation to the documentation for the gamma function explaining how to generate an igamma(\alpha, \beta) using the current functions? Thanks to all, adrian __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] character -> list
It would be helpful if you were more explicit on what you mean by not successful. Is the problem that: 1. you can't get aggregate to work with character data or 2. you want to convert the numeric column to numbers or 3. you want to have a structure that has both numbers and character columns Also, I am not sure if you actually want the characters or if you want the character columns converted to factors or, if applicable to numbers. In case 1, it actually does work: > aggregate(x[,-2], list(x[,2]), length) Group.1 type value 1 b2 2 2 c1 1 In case 2, use as.numeric: > aggregate(list(value=as.numeric(x[,3])),list(group=x[,2]), mean) group value 1 b 1.5 2 c 3.0 In case 3, create a data frame: x.df <- data.frame(type = I(x[,1]), group = I(x[,2]), value = as.numeric(x[,3])) If you want the character columns converted to factors then get rid of the I's. Date: 19 Mar 2004 00:47:38 +0100 From: David Andel <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Subject: [R] character - > list Hi I have a matrix of type "character" (strangly) and am trying to apply the function "aggregate" to it, but unfortunately without success. It seems to me that aggregate would work, if I only could get rid of the quotation marks around each item. So for a very simple example which looks as my actual data look (of course here I put the quotation marks on purpose, but I have no idea where they come from in my actual data): > x <- matrix(c("a","b","1","a","c","3","b","b","2"), nr=3, byrow=T, dimnames=list(1:3, c("type","group","value"))) > x type group value 1 "a" "b" "1" 2 "a" "c" "3" 3 "b" "b" "2" I can't access the columns the way I think would be necessary for aggregate to work: > x$type NULL And this seems to be the problem: > typeof(x) [1] "character" I think I would need to have type "list" to be able to apply "aggregate". How can I accomplish this? Thanks, David __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] substitute question
On Thu, 18 Mar 2004, Gabor Grothendieck wrote: > > I am not sure where this came from about not operating on functions. > Are you sure? I know just about everyone is saying this but > the help page does not refer to that and the > example I gave where we do use list(f=f) for f a function does > seem to expand properly (see my last posting) although > the subsitution never appears to take effect. > Yes, I am sure. It's not that it is invalid to have a function as the first argument of substitute, it's that substitute() does not recurse into either the body or the formal arguments of the function (or into the environment, though no-one would expect that). -thomas __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] profile error on an nls object
Adrian Dragulescu asks: > Hello all, > > This is the error message that I get. > > hyp.res <- nls(log(y)~log(pdf.hyperb(theta,X)), data=dataModel, > + start=list(theta=thetaE0), > + trace=TRUE) > 45.54325 : 0.100 1.3862944 -4.5577142 0.0005503 > 3.728302 : 0.0583857346 0.4757772859 -4.9156128701 0.0005563154 > 1.584317 : 0.0194149477 0.3444648833 -4.9365149150 0.0004105426 > 1.569333 : 0.0139310639 0.3824648048 -4.9024001228 0.0004089738 > 1.569311 : 0.0137155342 0.3888648619 -4.8979817546 0.0004137501 > 1.569311 : 0.0136895846 0.3893564152 -4.8976182201 0.0004141057 > 1.569311 : 0.0136876315 0.3894059947 -4.8975821760 0.0004141343 > > hyp.res.S <- summary(hyp.res) > > hyp.res.S > > Formula: log(y) ~ log(pdf.hyperb(theta, X)) > > Parameters: > Estimate Std. Error t value Pr(>|t|) > theta1 0.0136876 0.0359964 0.3800.705 > theta2 0.3894060 0.3079860 1.2640.211 > theta3 -4.8975822 0.2219928 -22.062 <2e-16 *** > theta4 0.0004141 0.0005457 0.7590.451 > --- > Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 > > Residual standard error: 0.1542 on 66 degrees of freedom > > Correlation of Parameter Estimates: > theta1theta2theta3 > theta2 -0.02168 > theta3 -0.02029 0.997736 > theta4 -0.97182 -0.008054 -0.008952 > > > pr1 <- profile(hyp.res) > 1.825584 : 0.3894059947 -4.8975821760 0.0004141343 > ... > 1.875413 : 0.000300086 1.830592703 0.000608001 > Error in prof$getProfile() : step factor 0.000488281 reduced below `minFactor' of 0.000976563 > > > > Why is there an error on profile, which should only evaluate the > objective function for different parameter values? profile() doesn't merely evaluate the objective function at different parameter values. It holds one of the parameters constant and optimises the objective function with respect to all the others. This is repeated for a sequence of values passing through the mle, and the same for each parameter. If you fix a parameter at a very unrealistic value (as can happen) it is not surprising that the optimisation with respect to all the others runs into trouble. This is a computationally difficult area and I am more surprised by the cases that work without a hitch than by the ones that don't. You can expect to have to tweak things a bit in many cases. Bill Venables. > > Thanks a lot. > > Adrian > > __ __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] Specifying interaction terms in glm
Firstly, I want to say thanks to the developers and maintainers of R and its packages- it is a great resource and I appreciate their work. My question relates to setting the reference level in interaction terms using glm in the "base" package. I would normally set contrasts for the treatment factors so that the base is zero (control), and the treatment (one) is compared to it. However, when I specify an interaction between 2 such factors in a glm model, the reference in the glm summary is both the level 2 factors combined. My example code is below: dat$treat <- factor(dat$treat, labels=c("no", "yes")) contrasts(dat$treat) <- contr.treatment(2, base=1, contrasts = TRUE) dat$sample <- factor(dat$sample, labels=c("no", "yes")) contrasts(dat$sample) <- contr.treatment(2, base=1, contrasts = TRUE) I tried reordering the base for the contrasts, but it didn't change the output. Is there some way around this without reversing the coding of my variables? Chris Compton (Veterinarian) Animal Health Centre P.O Box 21 Morrinsville New Zealand [[alternative HTML version deleted]] __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] substitute question
On Thu, 18 Mar 2004, Gabor Grothendieck wrote: > > > I don't think I expressed myself very well on that. > > Looking at what we get from the example: > > > z <- substitute(substitute(expression(f),list(a=quote(b))),list(f=f)) > > > z > substitute(expression(function () > { > a + 1 > }), list(a = quote(b))) > > > class(z);mode(z);typeof(z) > [1] "call" > [1] "call" > [1] "language" > > > we see that the function seems to be expanded correctly and > the statement does produce a call object. However, > applying eval one, two or three times does not give what > you would think if you looked at z above. Maybe we didn't express ourselves well enough. Looking at z above isn't enough. z is a call to substitute(). Its first operand is an expression. The expression contains a single term, which is a function. If you typed notz<- quote(substitute(expression(function () { a + 1 }), list(a = quote(b you would obtain something that deparsed the same as z, and so looked the same, but was actually different. In notz the first operand of substitute is an expression containing multiple terms, which if evaluated would return a function. substitute() goes though this expression and checks each term to see if it is `a`. In z there is only one term and it isn't `a`. In notz there is (after sufficient recursion) an `a` and it gets replaced. So > z[[2]][[2]] function () { a + 1 } > notz[[2]][[2]] function() { a + 1 } are the respective operands, and they still look the same. But > mode(z[[2]][[2]]) [1] "function" > mode(notz[[2]][[2]]) [1] "call" > length(z[[2]][[2]]) [1] 1 > length(notz[[2]][[2]]) [1] 4 and if we try to find the actual `a` in there > notz[[2]][[2]][[3]][[2]][[2]] a > z[[2]][[2]][[3]][[2]][[2]] Error in z[[2]][[2]][[3]] : object is not subsettable > -thomas __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] substitute question
Date: Thu, 18 Mar 2004 15:56:59 -0800 (PST) From: Thomas Lumley <[EMAIL PROTECTED]> > > On Thu, 18 Mar 2004, Gabor Grothendieck wrote: > > (1) One can either pick apart the function using body, or > > Actually, I think this is fairly natural -- it is only body(f) > that is an > expression. Certainly substitute() could have been written to > operate on > functions as well, but it wasn't. In the context of R, natural is performing operations on whole objects at once. Its the same difference as indexing vs. vector operations. I am not sure where this came from about not operating on functions. Are you sure? I know just about everyone is saying this but the help page does not refer to that and the example I gave where we do use list(f=f) for f a function does seem to expand properly (see my last posting) although the subsitution never appears to take effect. __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] substitute question
I don't think I expressed myself very well on that. Looking at what we get from the example: > z <- substitute(substitute(expression(f),list(a=quote(b))),list(f=f)) > z substitute(expression(function () { a + 1 }), list(a = quote(b))) > class(z);mode(z);typeof(z) [1] "call" [1] "call" [1] "language" we see that the function seems to be expanded correctly and the statement does produce a call object. However, applying eval one, two or three times does not give what you would think if you looked at z above. In all cases, a is still there. Some posters have claimed that the problem is that list(f=f) cannot hold a function and must be an expression but that's not what the help page says, the examples are not all of class expression or call and even if that were true then my parse/deparse example should work since it is unquestionably an expression. Date: Thu, 18 Mar 2004 16:41:31 -0700 From: Tony Plate <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]> Subject: Re: [R] substitute question Gabor, you might have less frustration if you work with Peter's esub() suggestion (use it instead of substitute()): esub <- function(expr, subst.list) do.call("substitute", list(expr, subst.list)) When you say "In the other one, it is not an expression in the inner substitute but should be by the time it gets to the outer one since I explicitly added expression(...). It is expanded which shows it did do that part right." something to bear in mind is the "natural order" of evaluation is reversed with nested substitute()'s (because the inner substitute() is quoted by the outer substitute()) (but I haven't carefully reasoned through this being an explanation for your particular frustration here.) hope this might help, Tony Plate At Thursday 04:06 PM 3/18/2004, Gabor Grothendieck wrote: > > Date: 18 Mar 2004 23:52:47 +0100 > > From: Peter Dalgaard <[EMAIL PROTECTED]> > > To: <[EMAIL PROTECTED]> > > Cc: <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]>, > <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]> > > Subject: Re: [R] substitute question > > > > > > "Gabor Grothendieck" <[EMAIL PROTECTED]> writes: > > > > > From: Peter Dalgaard <[EMAIL PROTECTED]> > > > > (The real pain in these examples is that substitute autoquotes its > > > > expr argument. Therefore, when you want to modify an expression that > > > > is already stored in a variable, you need an extra outer layer of > > > > eval(substitute(...)) to poke the content of the variable into the > > > > inner substitute. An "esub" function with standard evaluation > > > > semantics would make this much easier.) > > > > > > That is one of the frustrations of using substitute. > > > > > > The other is that even if you do perform two levels of substitute, > > > as I have been trying, you still can't count on it working for > > > an arbitrary unevaluated expression, as my examples show. > > > > Er, I don't think so. All I have seen is a couple of cases where you > > tried to pass something that was not a language object (e.g. a > > function as opposed to an expression or call generating a function.) > > > > > >The parse/deparse one definitely is an expression: > > > z <- parse(text=deparse(f)) > > class(z);mode(z);typeof(z) >[1] "expression" >[1] "expression" >[1] "expression" > >In the other one, it is not an expression in the inner substitute >but should be by the time it gets to the outer one since I >explicitly added expression(...). It is expanded which shows >it did do that part right. > __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] How to do a truncated regression
Hi, I'm interested in performing a regression of dependent variable y on independent variable x, where (x,y) are known only for y < c, where c is a constant. For y >= c, neither x or y are known. This is called a truncated regression, I believe. I read a post on the R help list, that recommended doing the following: "The form for the response is Surv(c,y,1), but it doesn't recycle arguments so you actually need Surv(rep(c,length(y)),y,rep(1,length(y)))" I have tried to follow the above procedure, but I obtain the error message " Stop time must be > start time" which I don't understand. I think that at least part of the problem is that its hard to know what "Surv(c,y,1)" means, i.e, what quantity in the input list to Surv is supposed to be set equal to c, to y, etc. There also may be other parameters I've not set correctly. The code that actually performs the regression is below: "trunc <- survreg(Surv(c,yx[,2],event=rep(1,length(yx[,2]))) ~ yx[,1], dist='gaussian', data=yxfr)" , where c is already defined as c<-rep(200,npoints), where npoints is the number of (x,y) data pairs. I should mention that I have R v1.8.1, and to perform these calculations I've invoked librarys MASS and SURVIVAL. I have tried to look this up in the manuals, but so far I've not found anything on truncated regression. If you could tell me what my error(s) is(are), and/or a detailed description of how to perform truncated regression, that would be great. Thanks, Howard Alper [[alternative HTML version deleted]] __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] character -> list
Use as.data.frame() on the matrix. HTH, Andy > From: David Andel > > Hi > > I have a matrix of type "character" (strangly) and am trying to apply > the function "aggregate" to it, but unfortunately without success. > It seems to me that aggregate would work, if I only could get > rid of the > quotation marks around each item. > > So for a very simple example which looks as my actual data look (of > course here I put the quotation marks on purpose, but I have no idea > where they come from in my actual data): > > > x <- matrix(c("a","b","1","a","c","3","b","b","2"), nr=3, byrow=T, > dimnames=list(1:3, c("type","group","value"))) > > x >type group value > 1 "a" "b" "1" > 2 "a" "c" "3" > 3 "b" "b" "2" > > I can't access the columns the way I think would be necessary for > aggregate to work: > > x$type > NULL > > And this seems to be the problem: > > typeof(x) > [1] "character" > > I think I would need to have type "list" to be able to apply > "aggregate". > > How can I accomplish this? > > Thanks, > David > > __ > [EMAIL PROTECTED] mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html > > --Notice: This e-mail message, together with any attachments, contains information of Merck & Co., Inc. (One Merck Drive, Whitehouse Station, New Jersey, USA 08889), and/or its affiliates (which may be known outside the United States as Merck Frosst, Merck Sharp & Dohme or MSD and in Japan, as Banyu) that may be confidential, proprietary copyrighted and/or legally privileged. It is intended solely for the use of the individual or entity named on this message. If you are not the intended recipient, and have received this message in error, please notify us immediately by reply e-mail and then delete it from your system. __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] Reading image file formats
Hi! Is there exists an instruction to read images (bmp, jpg, etc.) in R? __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] substitute question
On Thu, 18 Mar 2004, Gabor Grothendieck wrote: > > > From: Peter Dalgaard <[EMAIL PROTECTED]> > > (The real pain in these examples is that substitute autoquotes its > > expr argument. Therefore, when you want to modify an expression that > > is already stored in a variable, you need an extra outer layer of > > eval(substitute(...)) to poke the content of the variable into the > > inner substitute. An "esub" function with standard evaluation > > semantics would make this much easier.) > > That is one of the frustrations of using substitute. > > The other is that even if you do perform two levels of substitute, > as I have been trying, you still can't count on it working for > an arbitrary unevaluated expression, as my examples show. You can, but a function isn't an arbitrary unevaluated expression You still aren't passing an expression containg the symbol `a`. You are passing an expression containing the function f, whose body is an expression containing the symbol `a`. Functions aren't expressions. > > f <- function() { a + 1 } > z <- substitute(substitute(f=f,list(a=quote(b))),list(f=parse(text=deparse(f)$ > eval(eval(z)) > > or > > f <- function() { a + 1 } > z <- substitute(substitute(expression(f),list(a=quote(b))),list(f=f)) > eval(eval(eval(z))) > (1) One can either pick apart the function using body, or Actually, I think this is fairly natural -- it is only body(f) that is an expression. Certainly substitute() could have been written to operate on functions as well, but it wasn't. -thomas __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] sd(): why error with NA's?
R 1.8.1 with Windows XP. I have a question about how sd() behaves with NA's: > mean(c(1,2,3,NA)) [1] NA > median(c(1,2,3,NA)) [1] NA > mad(c(1,2,3,NA)) [1] NA > sd(c(1,2,3,NA)) Error in var(x, na.rm = na.rm) : missing observations in cov/cor > What is so special about the standard deviation, relative to other descriptive statistics, that the presence of NA's deserves an error instead of simply returning NA? (I know about na.rm=TRUE, but that is not the point here.) A few small changes to sd() would seem to resolve the anomaly: sd <- function(x, na.rm=FALSE) # Function like built-in 'sd', but return NA instead of error when # 'na.rm' is FALSE and 'x' has NA's. { if (is.matrix(x)) { apply(x, 2, sd, na.rm = na.rm) } else if (is.vector(x)) { if (!na.rm && any(is.na(x))) NA else sqrt(var(x, na.rm = na.rm)) } else if (is.data.frame(x)) { sapply(x, sd, na.rm = na.rm) } else { x <- as.vector(x) if (!na.rm && any(is.na(x))) NA else sqrt(var(x, na.rm = na.rm)) } } Rich Raubertas Merck & Co. --Notice: This e-mail message, together with any attachments, contains information of Merck & Co., Inc. (One Merck Drive, Whitehouse Station, New Jersey, USA 08889), and/or its affiliates (which may be known outside the United States as Merck Frosst, Merck Sharp & Dohme or MSD and in Japan, as Banyu) that may be confidential, proprietary copyrighted and/or legally privileged. It is intended solely for the use of the individual or entity named on this message. If you are not the intended recipient, and have received this message in error, please notify us immediately by reply e-mail and then delete it from your system. __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] character -> list
Hi I have a matrix of type "character" (strangly) and am trying to apply the function "aggregate" to it, but unfortunately without success. It seems to me that aggregate would work, if I only could get rid of the quotation marks around each item. So for a very simple example which looks as my actual data look (of course here I put the quotation marks on purpose, but I have no idea where they come from in my actual data): > x <- matrix(c("a","b","1","a","c","3","b","b","2"), nr=3, byrow=T, dimnames=list(1:3, c("type","group","value"))) > x type group value 1 "a" "b" "1" 2 "a" "c" "3" 3 "b" "b" "2" I can't access the columns the way I think would be necessary for aggregate to work: > x$type NULL And this seems to be the problem: > typeof(x) [1] "character" I think I would need to have type "list" to be able to apply "aggregate". How can I accomplish this? Thanks, David __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] substitute question
Gabor, you might have less frustration if you work with Peter's esub() suggestion (use it instead of substitute()): esub <- function(expr, subst.list) do.call("substitute", list(expr, subst.list)) When you say "In the other one, it is not an expression in the inner substitute but should be by the time it gets to the outer one since I explicitly added expression(...). It is expanded which shows it did do that part right." something to bear in mind is the "natural order" of evaluation is reversed with nested substitute()'s (because the inner substitute() is quoted by the outer substitute()) (but I haven't carefully reasoned through this being an explanation for your particular frustration here.) hope this might help, Tony Plate At Thursday 04:06 PM 3/18/2004, Gabor Grothendieck wrote: > Date: 18 Mar 2004 23:52:47 +0100 > From: Peter Dalgaard <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Cc: <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]> > Subject: Re: [R] substitute question > > > "Gabor Grothendieck" <[EMAIL PROTECTED]> writes: > > > From: Peter Dalgaard <[EMAIL PROTECTED]> > > > (The real pain in these examples is that substitute autoquotes its > > > expr argument. Therefore, when you want to modify an expression that > > > is already stored in a variable, you need an extra outer layer of > > > eval(substitute(...)) to poke the content of the variable into the > > > inner substitute. An "esub" function with standard evaluation > > > semantics would make this much easier.) > > > > That is one of the frustrations of using substitute. > > > > The other is that even if you do perform two levels of substitute, > > as I have been trying, you still can't count on it working for > > an arbitrary unevaluated expression, as my examples show. > > Er, I don't think so. All I have seen is a couple of cases where you > tried to pass something that was not a language object (e.g. a > function as opposed to an expression or call generating a function.) > > The parse/deparse one definitely is an expression: > z <- parse(text=deparse(f)) > class(z);mode(z);typeof(z) [1] "expression" [1] "expression" [1] "expression" In the other one, it is not an expression in the inner substitute but should be by the time it gets to the outer one since I explicitly added expression(...). It is expanded which shows it did do that part right. ___ No banners. No pop-ups. No kidding. Introducing My Way - http://www.myway.com __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] substitute question
> Date: 18 Mar 2004 23:52:47 +0100 > From: Peter Dalgaard <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Cc: <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]>, <[EMAIL > PROTECTED]> > Subject: Re: [R] substitute question > > > "Gabor Grothendieck" <[EMAIL PROTECTED]> writes: > > > From: Peter Dalgaard <[EMAIL PROTECTED]> > > > (The real pain in these examples is that substitute autoquotes its > > > expr argument. Therefore, when you want to modify an expression that > > > is already stored in a variable, you need an extra outer layer of > > > eval(substitute(...)) to poke the content of the variable into the > > > inner substitute. An "esub" function with standard evaluation > > > semantics would make this much easier.) > > > > That is one of the frustrations of using substitute. > > > > The other is that even if you do perform two levels of substitute, > > as I have been trying, you still can't count on it working for > > an arbitrary unevaluated expression, as my examples show. > > Er, I don't think so. All I have seen is a couple of cases where you > tried to pass something that was not a language object (e.g. a > function as opposed to an expression or call generating a function.) > > The parse/deparse one definitely is an expression: > z <- parse(text=deparse(f)) > class(z);mode(z);typeof(z) [1] "expression" [1] "expression" [1] "expression" In the other one, it is not an expression in the inner substitute but should be by the time it gets to the outer one since I explicitly added expression(...). It is expanded which shows it did do that part right. __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] substitute question
"Gabor Grothendieck" <[EMAIL PROTECTED]> writes: > From: Peter Dalgaard <[EMAIL PROTECTED]> > > (The real pain in these examples is that substitute autoquotes its > > expr argument. Therefore, when you want to modify an expression that > > is already stored in a variable, you need an extra outer layer of > > eval(substitute(...)) to poke the content of the variable into the > > inner substitute. An "esub" function with standard evaluation > > semantics would make this much easier.) > > That is one of the frustrations of using substitute. > > The other is that even if you do perform two levels of substitute, > as I have been trying, you still can't count on it working for > an arbitrary unevaluated expression, as my examples show. Er, I don't think so. All I have seen is a couple of cases where you tried to pass something that was not a language object (e.g. a function as opposed to an expression or call generating a function.) > Even putting aside the source attribute which is super confusing > until you know about it, all the solutions that I can see to > the problem I presented are ugly. > > (1) One can either pick apart the function using body, or > > (2) I assume one could convert the function to text and > paste together the correct substitute command with the text of > the function inserted in its argument. > > The quote mechanism works but is not applicable if all you have > is the function itself (as you point out). > > This is sooo frustrating. Well, the certain road to frustration is to try to do the impossible. A function is not a language object and you can only do substitutions on language objects. > f <- function()x > g <- quote(function()x) > f function()x > g function() x > mode(f) [1] "function" > mode(g) [1] "call" > is.language(f) [1] FALSE > is.language(g) [1] TRUE However, a function is basically a triplet consisting of an argument list, a body, and an environment, the middle of which *is* a language object. So I don't think your (1) is ugly, it's the logical way to proceed. -- O__ Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] profile error on an nls object
Hello all, This is the error message that I get. > hyp.res <- nls(log(y)~log(pdf.hyperb(theta,X)), data=dataModel, + start=list(theta=thetaE0), + trace=TRUE) 45.54325 : 0.100 1.3862944 -4.5577142 0.0005503 3.728302 : 0.0583857346 0.4757772859 -4.9156128701 0.0005563154 1.584317 : 0.0194149477 0.3444648833 -4.9365149150 0.0004105426 1.569333 : 0.0139310639 0.3824648048 -4.9024001228 0.0004089738 1.569311 : 0.0137155342 0.3888648619 -4.8979817546 0.0004137501 1.569311 : 0.0136895846 0.3893564152 -4.8976182201 0.0004141057 1.569311 : 0.0136876315 0.3894059947 -4.8975821760 0.0004141343 > hyp.res.S <- summary(hyp.res) > hyp.res.S Formula: log(y) ~ log(pdf.hyperb(theta, X)) Parameters: Estimate Std. Error t value Pr(>|t|) theta1 0.0136876 0.0359964 0.3800.705 theta2 0.3894060 0.3079860 1.2640.211 theta3 -4.8975822 0.2219928 -22.062 <2e-16 *** theta4 0.0004141 0.0005457 0.7590.451 --- Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 Residual standard error: 0.1542 on 66 degrees of freedom Correlation of Parameter Estimates: theta1theta2theta3 theta2 -0.02168 theta3 -0.02029 0.997736 theta4 -0.97182 -0.008054 -0.008952 > pr1 <- profile(hyp.res) 1.825584 : 0.3894059947 -4.8975821760 0.0004141343 1.58426 : 0.373691474 -4.909091289 0.000824045 1.583673 : 0.4176596873 -4.8774106487 0.0008176545 1.583670 : 0.4196944963 -4.8760375504 0.0008187918 1.583670 : 0.4199010211 -4.8758854269 0.0008188162 1.624899 : 0.449756713 -4.854643555 0.001215014 1.624743 : 0.46804752 -4.84185838 0.00122343 1.624741 : 0.470384534 -4.840195293 0.001224199 1.624741 : 0.470638282 -4.840013199 0.001224298 1.624741 : 0.470670500 -4.839990112 0.001224309 1.692158 : 0.522188258 -4.803565745 0.001635778 1.691853 : 0.540794581 -4.791027785 0.001650730 1.691847 : 0.544973564 -4.788090229 0.001652321 1.691847 : 0.545500818 -4.787718964 0.001652616 1.691847 : 0.545592388 -4.787654441 0.001652658 1.784749 : 0.622277872 -4.734086833 0.002091090 1.784039 : 0.642139831 -4.721442413 0.00211 1.784022 : 0.649929188 -4.716068239 0.002119126 1.784021 : 0.651094995 -4.715267692 0.002119963 1.784021 : 0.65136956 -4.71507850 0.00212012 1.784021 : 0.651420684 -4.715043256 0.002120153 1.901667 : 0.760981513 -4.639871097 0.002604136 1.899765 : 0.782870773 -4.627113544 0.002644289 1.899703 : 0.798044378 -4.616913842 0.002653139 1.899699 : 0.800930030 -4.614996517 0.002655646 1.899699 : 0.801815115 -4.614404602 0.002656286 1.899699 : 0.802033012 -4.614258879 0.002656455 1.899699 : 0.802090888 -4.614220164 0.002656499 2.042311 : 0.960722487 -4.508069592 0.003221186 2.036028 : 0.985442669 -4.495703574 0.003291724 2.035767 : 1.017849320 -4.474692317 0.003317203 2.035736 : 1.026482531 -4.469203277 0.003326355 2.035733 : 1.029937702 -4.466987738 0.003329627 2.035732 : 1.031114541 -4.466233213 0.003330776 2.035732 : 1.03153247 -4.46596514 0.00333118 2.035732 : 1.031679019 -4.465871141 0.003331322 2.035732 : 1.031730150 -4.465838341 0.003331371 1.583425 : 3.595503e-01 -4.918824e+00 1.793668e-05 1.583270 : 3.783622e-01 -4.905413e+00 2.175254e-05 1.58327 : 3.793739e-01 -4.904683e+00 2.134353e-05 1.58327 : 3.794562e-01 -4.904622e+00 2.133204e-05 1.624847 : 0.3695765499 -4.9116128267 -0.0003687005 1.624748 : 0.3877816645 -4.8985581022 -0.0003699797 1.624747 : 0.3890277914 -4.8976645481 -0.0003706884 1.624747 : 0.3891837724 -4.8975508910 -0.0003707385 1.693266 : 0.3989123147 -4.8904787597 -0.0007628478 1.693170 : 0.4172349434 -4.8774484377 -0.0007692982 1.693168 : 0.4193992605 -4.8759045536 -0.0007705839 1.693168 : 0.4197576966 -4.8756463144 -0.0007707548 1.693168 : 0.4198094076 -4.8756090629 -0.0007707816 1.788041 : 0.450653198 -4.853510937 -0.001173674 1.787884 : 0.469850125 -4.840178495 -0.001186483 1.787878 : 0.473941725 -4.837285088 -0.001188994 1.787878 : 0.474783800 -4.836687703 -0.001189518 1.787878 : 0.474960093 -4.836562526 -0.001189627 1.787878 : 0.474996400 -4.836536741 -0.001189650 1.908362 : 0.531011661 -4.796878005 -0.001614805 1.907987 : 0.552282889 -4.782714884 -0.001637055 1.907965 : 0.560264832 -4.777154923 -0.001642437 1.907964 : 0.562346209 -4.775709348 -0.001644026 1.907963 : 0.56295255 -4.77528733 -0.00164447 1.907963 : 0.563123513 -4.775168321 -0.001644596 1.907963 : 0.563172014 -4.775134556 -0.001644632 2.053048 : 0.653571857 -4.712183501 -0.002111091 2.051874 : 0.678913471 -4.696423681 -0.002150202 2.051785 : 0.69544095 -4.68518302 -0.00216328 2.051772 : 0.701166962 -4.681323343 -0.002168564 2.051770 : 0.703471045 -4.679765756 -0.002170603 2.051769 : 0.704360670 -4.679164327 -0.002171397 2.051769 : 0.704707691 -4.678929683 -0.002171706 2.051769 : 0.704842651 -4.678838422 -0.002171826 2.051769 : 0.704895042 -4.678802995 -0.00217187
Re: [R] substitute question
From: Peter Dalgaard <[EMAIL PROTECTED]> > (The real pain in these examples is that substitute autoquotes its > expr argument. Therefore, when you want to modify an expression that > is already stored in a variable, you need an extra outer layer of > eval(substitute(...)) to poke the content of the variable into the > inner substitute. An "esub" function with standard evaluation > semantics would make this much easier.) That is one of the frustrations of using substitute. The other is that even if you do perform two levels of substitute, as I have been trying, you still can't count on it working for an arbitrary unevaluated expression, as my examples show. Even putting aside the source attribute which is super confusing until you know about it, all the solutions that I can see to the problem I presented are ugly. (1) One can either pick apart the function using body, or (2) I assume one could convert the function to text and paste together the correct substitute command with the text of the function inserted in its argument. The quote mechanism works but is not applicable if all you have is the function itself (as you point out). This is sooo frustrating. Thanks to you, Tony and Thomas for all your help. __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] two lme questions
This is an update to my previous post today after finding some previous posts about crossed random effects. Any comments would be much appreciated. I have two random factors (Plot and Variety), one fixed factor (Time). I got rid of one of the fixed factors from my previous post for simplicity. Each Variety is tested at each of two Times, so I would like to include Time %in% Variety in my random factors. I tried the following based on a suggestion from Douglas Bates http://finzi.psych.upenn.edu/R/Rhelp02a/archive/26424.html > Data = groupedData(Measurement ~Time|Variety, data = read.table("mvone.txt",header = TRUE)) > Data$vt = factor(paste(Data$Variety,Data$Time,sep="/")) > Data$const=factor(rep(1,nrow(Data))) > Data.lme=lme(Measurement~Time,data=Data,random=list(const=pdBlocked(list(pdIdent(~Plot-1),pdIdent(~Variety-1),pdIdent(~vt-1) I'd like some help interpreting the results.(the ... mean that I deleted repetitive stuff) >summary(Data.lme) ... Block 1: Plot18Ea18La, Plot18Ea49Ea, Plot18Ea59Ea, Plot18Ea67Ea, Plot18La18Ea, Plot18La21La, Plot18La46La, Plot18La71La, Plot21Ea21La, ... Plot71La67La, Plot71La71Ea Formula: ~Plot - 1 | const Structure: Multiple of an Identity Plot18Ea18La Plot18Ea49Ea Plot18Ea59Ea Plot18Ea67Ea Plot18La18Ea StdDev: 0.973655 0.973655 0.973655 0.973655 0.973655 Plot18La21La Plot18La46La Plot18La71La Plot21Ea21La Plot21Ea59Ea StdDev: 0.973655 0.973655 0.973655 0.973655 0.973655 ... I take it that these StdDevs are the sqrt of the variance component for Plot. They are the diagonal of the pdBlocked matrix corresponding to pdIdent(~Plot-1) same thing for Block 2: VarietyL23, VarietyL54, VarietyL59, VarietyL71, VarietyL49, ... Formula: ~Variety - 1 | const Structure: Multiple of an Identity VarietyL23 VarietyL54 VarietyL59 VarietyL71 VarietyL49 VarietyL21 StdDev: 0.04296328 0.04296328 0.04296328 0.04296328 0.04296328 0.04296328 ... and Block 3: vtL18/Early, vtL18/Late, vtL21/Early, vtL21/Late, vtL23/Early, ... vtL71/Late Formula: ~vt - 1 | const Structure: Multiple of an Identity vtL18/Early vtL18/Late vtL21/Early vtL21/Late vtL23/Early vtL23/Late StdDev: 0.006307627 0.006307627 0.006307627 0.006307627 0.006307627 0.006307627 ... and Residual StdDev: 0.1299986 is just the sigma(e) Fixed effects: Measurement ~ Time Value Std.Error DF t-value p-value (Intercept) 9.762629 0.10228970 190 95.44097 <.0001 TimeLate-0.222656 0.03712913 190 -5.99680 <.0001 I'm still wondering why I only get TimeLate...is it because TimeEarly is just 0.222656? when I do: > intervals(Data.lme) Approximate 95% confidence intervals Fixed effects: lower est. upper (Intercept) 9.5608597 9.7626290 9.9643984 TimeLate-0.2958942 -0.2226559 -0.1494177 attr(,"label") [1] "Fixed effects:" Random Effects: Level: const lowerest. upper sd(Plot - 1)8.436375e-01 0.973655068 1.1237103 sd(Variety - 1) 1.577451e-02 0.042963279 0.1170143 sd(vt - 1) 4.186565e-06 0.006307627 9.5032935 Within-group standard error: lower est. upper 0.1119908 0.1299986 0.1509019 These are my confidence intervals on the variance components, I assume. I'm slightly confused on this because in one of the posts I found: http://finzi.psych.upenn.edu/R/Rhelp02a/archive/21857.html it seems to be much more complicated to find the variance componenets. Thanks much, Scott Rifkin [EMAIL PROTECTED] __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] why-s of method dispatching
On Thu, 18 Mar 2004, Vadim Ogranovich wrote: > I see. Thank you very much! > > Does R-Core have any plan to promote data.frame to an S4 class? In > general, is there any "road-map" (formal or informal) for phasing out S3 > classes? No, no. There is a vast amount of existing code depending on S3 classes. As you will see from Rolf Turner's reaction, many users wish to keep it that way. BTW, not all of us would see it as promotion, as S3 and S4 classes have different strengths. It is unfortunate that the particular way S4 classes are implemented at present that they get confused with S3 classes. > > Thanks, > Vadim > > > -Original Message- > > From: Prof Brian Ripley [mailto:[EMAIL PROTECTED] > > Sent: Thursday, March 18, 2004 12:24 AM > > To: Vadim Ogranovich > > Cc: R Help List > > Subject: Re: [R] why-s of method dispatching > > > > > > On Wed, 17 Mar 2004, Vadim Ogranovich wrote: > > > > > I am having a problem to understand why as.data.frame > > method doesn't > > > dispatch properly on my class: > > > > > > > setClass("Foo", "character") > > > [1] "Foo" > > > > as.data.frame(list(foo=new("Foo", .Data="a"))) > > > Error in as.data.frame.default(x[[i]], optional = TRUE) : > > > can't coerce Foo into a data.frame > > > > > > I was expecting that this would call as.data.frame.character. > > > > You have set an S4 class and as.data.frame is an S3 generic. > > > > > list(foo=new("Foo", .Data="a")) > > $foo > > An object of class "Foo" > > [1] "a" > > > > and what as.data.frame sees is > > > > > attributes(list(foo=new("Foo", .Data="a"))$foo) > > $class > > [1] "Foo" > > attr(,"package") > > [1] ".GlobalEnv" > > > > so thinks this is an S3 class it knows nothing about. > > > > > Another puzzle. If I explicitly call as.data.frame.character() it > > > would fail but for a different reason: > > > > > > > as.data.frame.character(list(foo=new("Foo", .Data="a"))) > > > Error in unique.default(x) : unique() applies only to vectors > > > > > > I was under an impression that an instance of "Foo" would > > be welcome > > > anywhere a "character" was, but it seems to be more subtle. > > What am I > > > missing? > > > > The difference between S3 and S4 classes. > > > > -- > > Brian D. Ripley, [EMAIL PROTECTED] > > Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ > > University of Oxford, Tel: +44 1865 272861 (self) > > 1 South Parks Road, +44 1865 272866 (PA) > > Oxford OX1 3TG, UKFax: +44 1865 272595 > > > > > > __ > [EMAIL PROTECTED] mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > > -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UKFax: +44 1865 272595 __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] substitute question
"Gabor Grothendieck" <[EMAIL PROTECTED]> writes: > Tony, Thomas, Thanks, again. > > If the problem with my last example was just that I was passing a function > rather than an unevaluated expression, then why don't the following > return f with b in place of a? In both cases, a is still there in the > final output. > > f <- function() { a + 1 } > z <- substitute(substitute(f=f,list(a=quote(b))),list(f=parse(text=deparse(f > eval(eval(z)) > > or > > f <- function() { a + 1 } > z <- substitute(substitute(expression(f),list(a=quote(b))),list(f=f)) > eval(eval(eval(z))) As far as I can see you don't quote *the expression that creates f* in either of the above f <- quote(function() { a + 1 }) attr(f,"source") <- NULL g <- eval(substitute(substitute(f, list(a=quote(b))),list(f=f))) g g() # oops, g is not a function but a call to "function" g <- eval(g) b <- 500 g() If you have only the function to begin with, try something along these lines f <- function() { a + 1 } g <- f attr(g,"source") <- NULL body(g) <- eval(substitute(substitute(f, list(a=quote(b))),list(f=body(f g g() (The real pain in these examples is that substitute autoquotes its expr argument. Therefore, when you want to modify an expression that is already stored in a variable, you need an extra outer layer of eval(substitute(...)) to poke the content of the variable into the inner substitute. An "esub" function with standard evaluation semantics would make this much easier.) -- O__ Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] why-s of method dispatching
Vadim Ogranovich wrote: > Does R-Core have any plan to promote data.frame to an S4 class? In > general, is there any "road-map" (formal or informal) for phasing out > S3 classes? FOR GOD'S SAKE DON'T!!! S4 classes and methods are incomprehensible to the human mind, which is what I'm equipped with. If S3 is phased out, R will become effectively unusable as a programming language. cheers, Rolf Turner [EMAIL PROTECTED] __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] RE: Frequency table (JCFaria)
Hi, Same time ago I made this generic function for frequency table. I think that it can help you. data <- c(65, 70, 85, 65, 65, 65, 62, 55, 82, 59, 55, 66, 74, 55, 65, 56, 80, 73, 45, 64, 75, 58, 60, 56, 60, 65, 53, 63, 72, 80, 90, 95, 55, 70, 79, 62, 57, 65, 60, 47, 61, 53, 80, 75, 72, 87, 52, 72, 80, 85, 75, 70, 84, 60, 72, 70, 76, 70, 79, 72, 69, 80, 62, 74, 54, 58, 58, 69, 81, 84) # begin options of table--- min <- 40 max <- 100 h <- 10 #-- end options of table--- # begin declaration of variables--- Fi <- numeric() FacA <- numeric(); FacP <- numeric() FrA <- numeric(); FrP <- numeric() # end declaration of variables- #- begin function-- Createtable <- function() { Fi <<- table(cut(data, br = seq(min, max, h), right = FALSE)) K <- length(names(Fi)) for(i in 1:K) { FrA[i] = Fi[i] / 70 } for(i in 1:K) { FrP[i] = (Fi[i] / 70) * 100 } for(i in 1:K) { FacA[i] = sum(Fi[1:i]) } for(i in 1:K) { FacP[i] = (sum(Fi[1:i]) / 70) * 100 } table <- data.frame(Fi, FrA, FrP, FacA, FacP) } #- end function-- tab <- Createtable() print("Complete table:") print(tab) José Cláudio Faria UESC/DCET Brasil 73-634.2779 [EMAIL PROTECTED] [EMAIL PROTECTED] __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] printf and sprintf: Where are they??
Ford Prefect wrote: Hi, Others on this list have happily commented that there exists printf and/or sprintf in R. I can't find it. help(sprintf) and help.search("sprintf") come up empty! Is it in some non-standard package? Thanks! On what platform/R-version? on R-1.8.1 for Windows I get: help.search("sprintf") sprintf(base) Use C-style String Formatting Commands capture(gregmisc) Capture printed output of an R expression in a string So "sprintf" is in the base package. -sundar __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] printf and sprintf: Where are they??
Hi, Others on this list have happily commented that there exists printf and/or sprintf in R. I can't find it. help(sprintf) and help.search("sprintf") come up empty! Is it in some non-standard package? Thanks! __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] substitute question
Tony, Thomas, Thanks, again. If the problem with my last example was just that I was passing a function rather than an unevaluated expression, then why don't the following return f with b in place of a? In both cases, a is still there in the final output. f <- function() { a + 1 } z <- substitute(substitute(f=f,list(a=quote(b))),list(f=parse(text=deparse(f eval(eval(z)) or f <- function() { a + 1 } z <- substitute(substitute(expression(f),list(a=quote(b))),list(f=f)) eval(eval(eval(z))) --- Date: Thu, 18 Mar 2004 11:29:39 -0800 (PST) From: Thomas Lumley <[EMAIL PROTECTED]> To: Gabor Grothendieck <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]> Subject: RE: [R] substitute question On Thu, 18 Mar 2004, Gabor Grothendieck wrote: > > Tony, Thomas. Thanks for your help. Your comments were very > useful. > > Unfortunately, my next step gives me a new round of problems. > > The following is the same as the last example except that instead > of hard coding the function into the expression I wanted to > pass it to the expression. It seems like one has to do a double > substitute to get this effect but I am having problems getting this > to work. > The problem is that f is a function, not an expression. You need to work with body(f) Either > f<-function(){a+1}> body(f)<-do.call("substitute",list(body(f),list(a=quote(b> f function () { b + 1 } or > f<-function(){a+1} > body(f)<-eval(substitute(substitute(expr,list(a=quote(b))),list(expr=body(f > f function () { b + 1 } -thomas --- Date: Thu, 18 Mar 2004 12:15:45 -0700 From: Tony Plate <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]> Subject: RE: [R] substitute question Gabor, I suspect you are overlooking the fact that substitute() does not evaluate its first argument. So, in the previous example you were giving an unevaluated expression as the first argument of substitute(). In your most recent example you are supplying a function object as the first argument of substitute() (by supplying it as the value to be substituted for f). I think you can get what you want by first doing f <- Quote(function(){a+1}): > f <- Quote(function(){a+1}) > f function() { a + 1 } > z <- substitute(substitute(f,list(a=quote(b))),list(f=f)) > z substitute(function() { a + 1 }, list(a = quote(b))) > eval(z) function() { b + 1 } > eval(eval(z)) # this displays the "source" attribute function(){a+1} > body(eval(eval(z))) { b + 1 } > hope this helps, Tony Plate At Thursday 12:00 PM 3/18/2004, you wrote: >Tony, Thomas. Thanks for your help. Your comments were very >useful. > >Unfortunately, my next step gives me a new round of problems. > >The following is the same as the last example except that instead >of hard coding the function into the expression I wanted to >pass it to the expression. It seems like one has to do a double >substitute to get this effect but I am having problems getting this >to work. > >In the code below we first show that the keep.source option has been >set to FALSE so that the source attribute does not mislead us. > >Then we do a double substitute. The outer substitute just creates >the substitute that was in my previous question. This outer >substitute produces z, a call object. So far its as expected. > >We then do ze <- eval(z) but we get a function object right away. I was >expecting that we get an expression object. Even worse, the function does not >have a replaced with b -- even though this did work in the previous >example >that I posted. > >What's wrong? > > > > options()$keep.source >[1] FALSE > > f <- function(){a+1} > > z <- substitute(substitute(f,list(a=quote(b))),list(f=f)) > > class(z) >[1] "call" > > as.list(z) >[[1]] >substitute > >[[2]] >function () >{ > a + 1 >} > >[[3]] >list(a = quote(b)) > > > ze <- eval(z) > > class(ze) >[1] "function" > > ze >function () >{ > a + 1 >} > > attr(ze,"source") >NULL > > > >--- > >Date: Thu, 18 Mar 2004 09:00:02 -0800 (PST) >From: Thomas Lumley <[EMAIL PROTECTED]> >To: Gabor Grothendieck <[EMAIL PROTECTED]> >Cc: <[EMAIL PROTECTED]> >Subject: RE: [R] substitute question > > >On Wed, 17 Mar 2004, Gabor Grothendieck wrote: > > > > > > > I left out the brackets in my last email but the problem > > (a reappears after have been substituted out) still remains: > > > > > z <- substitute( function(){a+1}, list(a=quote(b)) ) > > > z > > function() { > > b + 1 > > } > > > eval(z) > > function(){a+1} > > >Interesting. > >Appearances are misleading, however: > > z <- substitute( function(){a+1}, list(a=quote(b)) ) > > z >function() { >b + 1 >} > > f<-eval(z) > > f() >Error in f() : Object "b" not found > > f >function(){a+1} > > attr(f,"source")<-NULL > > f >function () >{ >b + 1 >} > >So it isn't that eval(z) has a+1 inside, it just has a "source" attribute >with a+1. > >Looking more carefully at z > > as.list(z) >[[1]] >`function` > >[[2]] >NULL > >[[3]] >{ >b + 1 >} > >[[4]] >[1] "function(){a+1}" > >so the or
RE: [R] why-s of method dispatching
I see. Thank you very much! Does R-Core have any plan to promote data.frame to an S4 class? In general, is there any "road-map" (formal or informal) for phasing out S3 classes? Thanks, Vadim > -Original Message- > From: Prof Brian Ripley [mailto:[EMAIL PROTECTED] > Sent: Thursday, March 18, 2004 12:24 AM > To: Vadim Ogranovich > Cc: R Help List > Subject: Re: [R] why-s of method dispatching > > > On Wed, 17 Mar 2004, Vadim Ogranovich wrote: > > > I am having a problem to understand why as.data.frame > method doesn't > > dispatch properly on my class: > > > > > setClass("Foo", "character") > > [1] "Foo" > > > as.data.frame(list(foo=new("Foo", .Data="a"))) > > Error in as.data.frame.default(x[[i]], optional = TRUE) : > > can't coerce Foo into a data.frame > > > > I was expecting that this would call as.data.frame.character. > > You have set an S4 class and as.data.frame is an S3 generic. > > > list(foo=new("Foo", .Data="a")) > $foo > An object of class "Foo" > [1] "a" > > and what as.data.frame sees is > > > attributes(list(foo=new("Foo", .Data="a"))$foo) > $class > [1] "Foo" > attr(,"package") > [1] ".GlobalEnv" > > so thinks this is an S3 class it knows nothing about. > > > Another puzzle. If I explicitly call as.data.frame.character() it > > would fail but for a different reason: > > > > > as.data.frame.character(list(foo=new("Foo", .Data="a"))) > > Error in unique.default(x) : unique() applies only to vectors > > > > I was under an impression that an instance of "Foo" would > be welcome > > anywhere a "character" was, but it seems to be more subtle. > What am I > > missing? > > The difference between S3 and S4 classes. > > -- > Brian D. Ripley, [EMAIL PROTECTED] > Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ > University of Oxford, Tel: +44 1865 272861 (self) > 1 South Parks Road, +44 1865 272866 (PA) > Oxford OX1 3TG, UKFax: +44 1865 272595 > > __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] Problem getting SJava to work on windows
Hi, I installed SJava on Windows. But I am not able to invoke SJava as when I try to load the library(SJava) it complains saying JAVA_HOME is not set? What is the best way to resolve this problem? Thanks, Venky __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] why-s of method dispatching
I see. Thank you very much! This brings another question. Does R-Core have any plan to promote data.frame to an S4 class? In general, is there any "road-map" (formal or informal) to phasing out S3 classes? Thanks, Vadim > -Original Message- > From: Prof Brian Ripley [mailto:[EMAIL PROTECTED] > Sent: Thursday, March 18, 2004 12:24 AM > To: Vadim Ogranovich > Cc: R Help List > Subject: Re: [R] why-s of method dispatching > > > On Wed, 17 Mar 2004, Vadim Ogranovich wrote: > > > I am having a problem to understand why as.data.frame > method doesn't > > dispatch properly on my class: > > > > > setClass("Foo", "character") > > [1] "Foo" > > > as.data.frame(list(foo=new("Foo", .Data="a"))) > > Error in as.data.frame.default(x[[i]], optional = TRUE) : can't > > coerce Foo into a data.frame > > > > I was expecting that this would call as.data.frame.character. > > You have set an S4 class and as.data.frame is an S3 generic. > > > list(foo=new("Foo", .Data="a")) > $foo > An object of class "Foo" > [1] "a" > > and what as.data.frame sees is > > > attributes(list(foo=new("Foo", .Data="a"))$foo) > $class > [1] "Foo" > attr(,"package") > [1] ".GlobalEnv" > > so thinks this is an S3 class it knows nothing about. > > > Another puzzle. If I explicitly call as.data.frame.character() it > > would fail but for a different reason: > > > > > as.data.frame.character(list(foo=new("Foo", .Data="a"))) > > Error in unique.default(x) : unique() applies only to vectors > > > > I was under an impression that an instance of "Foo" would > be welcome > > anywhere a "character" was, but it seems to be more subtle. > What am I > > missing? > > The difference between S3 and S4 classes. > > -- > Brian D. Ripley, [EMAIL PROTECTED] > Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ > University of Oxford, Tel: +44 1865 272861 (self) > 1 South Parks Road, +44 1865 272866 (PA) > Oxford OX1 3TG, UKFax: +44 1865 272595 > > __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] substitute question
Anyone Knows How Shoud I Build Rasch Models (Partial Credit Models) In R? []s Leonard Assis Estatístico - CONFE 7439 __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] substitute question
On Thu, 18 Mar 2004, Gabor Grothendieck wrote: > > Tony, Thomas. Thanks for your help. Your comments were very > useful. > > Unfortunately, my next step gives me a new round of problems. > > The following is the same as the last example except that instead > of hard coding the function into the expression I wanted to > pass it to the expression. It seems like one has to do a double > substitute to get this effect but I am having problems getting this > to work. > The problem is that f is a function, not an expression. You need to work with body(f) Either > f<-function(){a+1}> body(f)<-do.call("substitute",list(body(f),list(a=quote(b> f function () { b + 1 } or > f<-function(){a+1} > body(f)<-eval(substitute(substitute(expr,list(a=quote(b))),list(expr=body(f > f function () { b + 1 } -thomas __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] substitute question
Gabor, I suspect you are overlooking the fact that substitute() does not evaluate its first argument. So, in the previous example you were giving an unevaluated expression as the first argument of substitute(). In your most recent example you are supplying a function object as the first argument of substitute() (by supplying it as the value to be substituted for f). I think you can get what you want by first doing f <- Quote(function(){a+1}): > f <- Quote(function(){a+1}) > f function() { a + 1 } > z <- substitute(substitute(f,list(a=quote(b))),list(f=f)) > z substitute(function() { a + 1 }, list(a = quote(b))) > eval(z) function() { b + 1 } > eval(eval(z)) # this displays the "source" attribute function(){a+1} > body(eval(eval(z))) { b + 1 } > hope this helps, Tony Plate At Thursday 12:00 PM 3/18/2004, you wrote: Tony, Thomas. Thanks for your help. Your comments were very useful. Unfortunately, my next step gives me a new round of problems. The following is the same as the last example except that instead of hard coding the function into the expression I wanted to pass it to the expression. It seems like one has to do a double substitute to get this effect but I am having problems getting this to work. In the code below we first show that the keep.source option has been set to FALSE so that the source attribute does not mislead us. Then we do a double substitute. The outer substitute just creates the substitute that was in my previous question. This outer substitute produces z, a call object. So far its as expected. We then do ze <- eval(z) but we get a function object right away. I was expecting that we get an expression object. Even worse, the function does not have a replaced with b -- even though this did work in the previous example that I posted. What's wrong? > options()$keep.source [1] FALSE > f <- function(){a+1} > z <- substitute(substitute(f,list(a=quote(b))),list(f=f)) > class(z) [1] "call" > as.list(z) [[1]] substitute [[2]] function () { a + 1 } [[3]] list(a = quote(b)) > ze <- eval(z) > class(ze) [1] "function" > ze function () { a + 1 } > attr(ze,"source") NULL > --- Date: Thu, 18 Mar 2004 09:00:02 -0800 (PST) From: Thomas Lumley <[EMAIL PROTECTED]> To: Gabor Grothendieck <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]> Subject: RE: [R] substitute question On Wed, 17 Mar 2004, Gabor Grothendieck wrote: > > > I left out the brackets in my last email but the problem > (a reappears after have been substituted out) still remains: > > > z <- substitute( function(){a+1}, list(a=quote(b)) ) > > z > function() { > b + 1 > } > > eval(z) > function(){a+1} Interesting. Appearances are misleading, however: > z <- substitute( function(){a+1}, list(a=quote(b)) ) > z function() { b + 1 } > f<-eval(z) > f() Error in f() : Object "b" not found > f function(){a+1} > attr(f,"source")<-NULL > f function () { b + 1 } So it isn't that eval(z) has a+1 inside, it just has a "source" attribute with a+1. Looking more carefully at z > as.list(z) [[1]] `function` [[2]] NULL [[3]] { b + 1 } [[4]] [1] "function(){a+1}" so the original construction of z has kept the source (not, however, as a "source" attribute). There is method to our madness here. It is impossible (or at least too complicated) to keep comments in the right place as a function is parsed and deparsed. In the old days, comments would occasionally move around, sometimes in very misleading ways (IIRC with if(){}else{} cases) Now we keep a copy of the source code with functions created interactively or with source(), and drop the comments on parsing. This is controlled by options("keep.source"). If you do a lot of substitute()-style programming you may want options(keep.source=FALSE). -thomas PS: There are, of course, interesting possibilities for creative abuse of the source attribute --- Date: Thu, 18 Mar 2004 08:41:54 -0700 From: Tony Plate <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]> Subject: RE: [R] substitute question This is because of the saved attribute "source" on z (that doesn't get printed out before evaluating z, because z is not yet then a function). To complete your example: > z <- substitute( function(){a+1}, list(a=quote(b)) ) > z function() { b + 1 } > eval(z) function(){a+1} > ze <- eval(z) > attributes(ze) $source [1] "function(){a+1}" > attr(ze, "source") <- NULL > ze function () { b + 1 } > I previously wrote on this topic: Date: Fri, 24 Oct 2003 09:42:55 -0600 To: [EMAIL PROTECTED], Peter Dalgaard <[EMAIL PROTECTED]> From: Tony Plate <[EMAIL PROTECTED]> Subject: Re: [R] what's going on here with substitute() ? Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Peter, thank you for the explanation. This is indeed what is happening. Might I suggest the following passage for inclusion in the help page for "function", and possibly also "body", in the DETAILS or WARNING section: "Note that the text of the origina
RE: [R] substitute question
Tony, Thomas. Thanks for your help. Your comments were very useful. Unfortunately, my next step gives me a new round of problems. The following is the same as the last example except that instead of hard coding the function into the expression I wanted to pass it to the expression. It seems like one has to do a double substitute to get this effect but I am having problems getting this to work. In the code below we first show that the keep.source option has been set to FALSE so that the source attribute does not mislead us. Then we do a double substitute. The outer substitute just creates the substitute that was in my previous question. This outer substitute produces z, a call object. So far its as expected. We then do ze <- eval(z) but we get a function object right away. I was expecting that we get an expression object. Even worse, the function does not have a replaced with b -- even though this did work in the previous example that I posted. What's wrong? > options()$keep.source [1] FALSE > f <- function(){a+1} > z <- substitute(substitute(f,list(a=quote(b))),list(f=f)) > class(z) [1] "call" > as.list(z) [[1]] substitute [[2]] function () { a + 1 } [[3]] list(a = quote(b)) > ze <- eval(z) > class(ze) [1] "function" > ze function () { a + 1 } > attr(ze,"source") NULL > --- Date: Thu, 18 Mar 2004 09:00:02 -0800 (PST) From: Thomas Lumley <[EMAIL PROTECTED]> To: Gabor Grothendieck <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]> Subject: RE: [R] substitute question On Wed, 17 Mar 2004, Gabor Grothendieck wrote: > > > I left out the brackets in my last email but the problem > (a reappears after have been substituted out) still remains: > > > z <- substitute( function(){a+1}, list(a=quote(b)) ) > > z > function() { > b + 1 > } > > eval(z) > function(){a+1} Interesting. Appearances are misleading, however: > z <- substitute( function(){a+1}, list(a=quote(b)) ) > z function() { b + 1 } > f<-eval(z) > f() Error in f() : Object "b" not found > f function(){a+1} > attr(f,"source")<-NULL > f function () { b + 1 } So it isn't that eval(z) has a+1 inside, it just has a "source" attribute with a+1. Looking more carefully at z > as.list(z) [[1]] `function` [[2]] NULL [[3]] { b + 1 } [[4]] [1] "function(){a+1}" so the original construction of z has kept the source (not, however, as a "source" attribute). There is method to our madness here. It is impossible (or at least too complicated) to keep comments in the right place as a function is parsed and deparsed. In the old days, comments would occasionally move around, sometimes in very misleading ways (IIRC with if(){}else{} cases) Now we keep a copy of the source code with functions created interactively or with source(), and drop the comments on parsing. This is controlled by options("keep.source"). If you do a lot of substitute()-style programming you may want options(keep.source=FALSE). -thomas PS: There are, of course, interesting possibilities for creative abuse of the source attribute --- Date: Thu, 18 Mar 2004 08:41:54 -0700 From: Tony Plate <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]> Subject: RE: [R] substitute question This is because of the saved attribute "source" on z (that doesn't get printed out before evaluating z, because z is not yet then a function). To complete your example: > z <- substitute( function(){a+1}, list(a=quote(b)) ) > z function() { b + 1 } > eval(z) function(){a+1} > ze <- eval(z) > attributes(ze) $source [1] "function(){a+1}" > attr(ze, "source") <- NULL > ze function () { b + 1 } > I previously wrote on this topic: Date: Fri, 24 Oct 2003 09:42:55 -0600 To: [EMAIL PROTECTED], Peter Dalgaard <[EMAIL PROTECTED]> From: Tony Plate <[EMAIL PROTECTED]> Subject: Re: [R] what's going on here with substitute() ? Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Peter, thank you for the explanation. This is indeed what is happening. Might I suggest the following passage for inclusion in the help page for "function", and possibly also "body", in the DETAILS or WARNING section: "Note that the text of the original function definition is saved as an attribute "source" on the function, and this is printed out when the function is printed. Hence, if the function body is changed in some way other than by assigning a value via body() (which removes the "source" attribute), the printed form of the function may not be the same as the actual function body." Something along these lines could also go in the help for "eval", though if it were only there it might be very difficult to find if one were trying to look up puzzling behavior of a function. Here is a transcript that shows what is happening, with another suggestion following it. > eval(substitute(this.is.R <- function() X, list(X=!is.null(options("CRAN")[[1]] > this.is.R function() X > body(this.is.R) [1] TRUE > attributes(this.is.R) $sourc
Re: [R] help with aov
This is nothing to do with aov: if you want to look at coefficients you may as well use lm(). The idea of aov is to look at factors as a whole. You do need to understand codings: looks like you want to specify contr.sum contrasts. The best place to read about this is chapter 6 of MASS. On Thu, 18 Mar 2004, Martin Olivier wrote: > Hi all, > > Suppose the following data and the simple model > y<-1:12+rnorm(12) > fac1<-c(rep("A",4),rep("B",4),rep("C",4)) > fac2<-rep(c("D","C"),6) > dat<-data.frame(y,fac1,fac2) > tmp<-aov(y~fac1+fac2,dat) > > the command tmp$coeff gives the fllowing results : > > (Intercept) fac1B fac1C fac2D > 3.3078882.8981877.409010 -1.088588 > > But mean(y) gives 6.199327 and is different of Intercept.. > So, I don't understand the parametrization with the aov() function. > I would like the estimations with the constraints > fac1A+fac1B+fac1C =0 and fac2D+fac2C=0... > > What is the solution? > > > Thanks, > Olivier. > > __ > [EMAIL PROTECTED] mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > > -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UKFax: +44 1865 272595 __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] help with aov
Hi all, Suppose the following data and the simple model y<-1:12+rnorm(12) fac1<-c(rep("A",4),rep("B",4),rep("C",4)) fac2<-rep(c("D","C"),6) dat<-data.frame(y,fac1,fac2) tmp<-aov(y~fac1+fac2,dat) the command tmp$coeff gives the fllowing results : (Intercept) fac1B fac1C fac2D 3.3078882.8981877.409010 -1.088588 But mean(y) gives 6.199327 and is different of Intercept.. So, I don't understand the parametrization with the aov() function. I would like the estimations with the constraints fac1A+fac1B+fac1C =0 and fac2D+fac2C=0... What is the solution? Thanks, Olivier. __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] Re: projection pursuit
> From: [EMAIL PROTECTED] > > Luis, > > See the fastICA package, in particular the final example in > the function > fastICA's help page. This doesn't leave you with density > estimates, but > with projection-pursuit directions; you still have to figure > out how to fit > a density estimate to the rotated data. Actually, as I understand it, > XGobi also finds directions but does not fit a density. However, any > multivariate density estimator ought to be applicable. I'm > not aware at > the moment of the tools R offers for multivariate density > estimation, but > I'm sure there are multiple possibilities. I believe locfit() can handle up to 5 dimensions. > _The Elements of Statistical Learning_ by Hastie, Tibshirani, > and Friedman > mention a "trick" to use classification tools (which model class > probabilities) to estimate density. Fundamentally, generate > data from a > reference distribution, and use the classification tool to estimate > probability of observed data (as opposed to generated data) > as a function > of the inputs. These probabilities, normalized to integrate > to 1, form a > density estimate. Since there are so very many classification tools > available, this trick offers a lot of flexibility. Leo Breiman had talked about this `trick' in his early presentations on random forest. However, from my limited experiment, this is an extremely poor way of estimating density. Has anyone else tried it? Cheers, Andy > Good luck. > > Jim Garrett > Baltimore, Maryland, USA > > > ** > This message is intended only for the designated > recipient(s...{{dropped}} > > __ > [EMAIL PROTECTED] mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html > > -- Notice: This e-mail message, together with any attachments,...{{dropped}} __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] .First.lib failed
Using R-devel of 2Mar04 on debian linux I am getting an error when running /usr/local/src/R-devel/bin/R CMD check --no-clean Hmisc: * checking S3 generic/method consistency ... WARNING Error in .tryQuietly({ : Error in library(package, lib.loc = lib.loc, character. only = TRUE, verbose = FALSE) : .First.lib failed Execution halted I remember having to solve this problem previously but I can't remember how. Contents of R/Hmisc/s/First.lib.s (main functions in Hmisc are in R/Hmisc/R/Hmisc.R): .First.lib <- function(lib, pkg, verbose=TRUE, ...) { if(verbose) cat("Hmisc library by Frank E Harrell Jr\n\n", "Type library(help='Hmisc'), ?Overview, or ?Hmisc.Overview')\n", "to see overall documentation.\n\n", "Hmisc redefines [.factor to drop unused levels of factor variables\n", "when subscripting. To prevent this behaviour, issue the command\n", "options(drop.unused.levels=F).\n\n", sep='') library.dynam("Hmisc", pkg, lib) invisible() } If I run /usr/local/src/R-devel/bin/R and type library(Hmisc) everything is fine. Thanks for any pointers. -Frank Harrell __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] projection pursuit
I don't think anyone has actually answered this. PPDE is a technical term, defined in Friedman, Steutzle and Schroeder (1984) Projection pursuit density estimation. Journal of the American Statistical Association, 79(387):599-608, September 1984. I don't know of an R implementation, but have known of S ones (to which I no longer have access). If that is not what you mean by PPDE, please give us the reference(s) you have in mind. On Wed, 17 Mar 2004 [EMAIL PROTECTED] wrote: > Does R have a package that performs projection pursuit density estimation? Or > anyone knows code in Matlab or C for example to do this? -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UKFax: +44 1865 272595 __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] substitute question
This is because of the saved attribute "source" on z (that doesn't get printed out before evaluating z, because z is not yet then a function). To complete your example: > z <- substitute( function(){a+1}, list(a=quote(b)) ) > z function() { b + 1 } > eval(z) function(){a+1} > ze <- eval(z) > attributes(ze) $source [1] "function(){a+1}" > attr(ze, "source") <- NULL > ze function () { b + 1 } > I previously wrote on this topic: Date: Fri, 24 Oct 2003 09:42:55 -0600 To: [EMAIL PROTECTED], Peter Dalgaard <[EMAIL PROTECTED]> From: Tony Plate <[EMAIL PROTECTED]> Subject: Re: [R] what's going on here with substitute() ? Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Peter, thank you for the explanation. This is indeed what is happening. Might I suggest the following passage for inclusion in the help page for "function", and possibly also "body", in the DETAILS or WARNING section: "Note that the text of the original function definition is saved as an attribute "source" on the function, and this is printed out when the function is printed. Hence, if the function body is changed in some way other than by assigning a value via body() (which removes the "source" attribute), the printed form of the function may not be the same as the actual function body." Something along these lines could also go in the help for "eval", though if it were only there it might be very difficult to find if one were trying to look up puzzling behavior of a function. Here is a transcript that shows what is happening, with another suggestion following it. > eval(substitute(this.is.R <- function() X, list(X=!is.null(options("CRAN")[[1]] > this.is.R function() X > body(this.is.R) [1] TRUE > attributes(this.is.R) $source [1] "function() X" > attributes(this.is.R) <- NULL > this.is.R function () TRUE > # the "source" attribute comes from function definition: > attributes(function() X) $source [1] "function() X" > # and seems to be added by "eval": > attr(eval(parse(text="function() TRUE")[[1]]), "source") [1] "function() TRUE" > > # we can assign bogus "source" > attr(this.is.R, "source") <- "a totally bogus function body" > this.is.R a totally bogus function body > # assigning to body() removes "source" > body(this.is.R) <- list(666) > this.is.R function () 666 > attr(this.is.R, "source") NULL > An even better approach might be something that gave a warning on printing if the parsed "source" attribute was not identical to the language object being printed. This would probably belong in the code for "case LANGSXP:" in the function PrintValueRec in main/print.c (if it were written in R, I could contribute a patch, but right now I don't have time to try to understand the C there.) R code to do the test could be something like this: > f <- this.is.R > identical(f, eval(parse(text=attr(f, "source"))[[1]])) [1] FALSE > f <- function() TRUE > identical(f, eval(parse(text=attr(f, "source"))[[1]])) [1] TRUE > -- Tony Plate At Wednesday 08:09 PM 3/17/2004, Gabor Grothendieck wrote: I left out the brackets in my last email but the problem (a reappears after have been substituted out) still remains: > z <- substitute( function(){a+1}, list(a=quote(b)) ) > z function() { b + 1 } > eval(z) function(){a+1} --- Date: Wed, 17 Mar 2004 20:10:43 -0500 (EST) From: Gabor Grothendieck <[EMAIL PROTECTED]> [ Add to Address Book | Block Address | Report as Spam ] To: <[EMAIL PROTECTED]> Subject: [R] substitute question Consider the following example: # substitute a with b in the indicated function. Seems to work. > z <- substitute( function()a+1, list(a=quote(b)) ) > z function() b + 1 # z is an object of class call so use eval # to turn it into an object of class expression; however, # when z is evaluated, the variable a returns. > eval(z) function()a+1 Why did a suddenly reappear again after it had already been replaced? __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] substitute question
On Wed, 17 Mar 2004, Gabor Grothendieck wrote: > > > I left out the brackets in my last email but the problem > (a reappears after have been substituted out) still remains: > > > z <- substitute( function(){a+1}, list(a=quote(b)) ) > > z > function() { > b + 1 > } > > eval(z) > function(){a+1} Interesting. Appearances are misleading, however: > z <- substitute( function(){a+1}, list(a=quote(b)) ) > z function() { b + 1 } > f<-eval(z) > f() Error in f() : Object "b" not found > f function(){a+1} > attr(f,"source")<-NULL > f function () { b + 1 } So it isn't that eval(z) has a+1 inside, it just has a "source" attribute with a+1. Looking more carefully at z > as.list(z) [[1]] `function` [[2]] NULL [[3]] { b + 1 } [[4]] [1] "function(){a+1}" so the original construction of z has kept the source (not, however, as a "source" attribute). There is method to our madness here. It is impossible (or at least too complicated) to keep comments in the right place as a function is parsed and deparsed. In the old days, comments would occasionally move around, sometimes in very misleading ways (IIRC with if(){}else{} cases) Now we keep a copy of the source code with functions created interactively or with source(), and drop the comments on parsing. This is controlled by options("keep.source"). If you do a lot of substitute()-style programming you may want options(keep.source=FALSE). -thomas PS: There are, of course, interesting possibilities for creative abuse of the source attribute __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] dsn
You appear to be using unixODBC and DOS paths! You haven't told us what OS, what version of R, what version of RODBC, what driver manager, what driver But it does seem unlikely that unixODBC understands DOS paths. The issue is very simple: the driver manager is not finding the path you specified. We can only guess at why. On Wed, 1 Jan 1997, Margarida =?iso-8859-1?Q?Júlia?= Rodrigues Igreja wrote: Wow, your computer is living in the past! > I've finally got a DSN working on my ODBC installation and I've tested it > with the ODBC DataManager so I'm sure it's working. > However when trying to connect to the DSN via R interface I get an error: > > > > odbcConnect("H:\\Desktop\\bd1",uid="tiago",pwd="archi",case="nochange",believeNRows=TRUE) > [1] -1 > Warning messages: > 1: [RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver > Manager]Data source name not found, and no default driver specified > 2: ODBC connection failed in: odbcDriverConnect(paste("DSN=", dsn, ";UID=", > uid, ";PWD=", pwd, > > Before the odbcCOnnect() command I gave the library(RODBC) command and it > gave no error > What am I missing? > > Margarida > > __ > [EMAIL PROTECTED] mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > > -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UKFax: +44 1865 272595 __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] dsn
Margarida > odbcConnect("H:\\Desktop\\bd1",uid="tiago",pwd="archi",case="nochange",believeNRows=TRUE) > [1] -1 > Warning messages: > 1: [RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver > Manager]Data source name not found, and no default driver specified You simply need to give the data source name (DSN), not a path, as the first argument to odbcConnect. If you want to connect directly to a database file, rather than via a DSN, the RODBC package also provides odbcConnectAccess etc. I am slightly surprised that you appear to be using unixODBC on what appears to be (from the path specification) a windows system. I guess this may be possible via cygwin - maybe there's even a win32 release of unixODBC. RODBC works fine with the standard MS ODBC setup on windows systems as far as I can tell. David __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] Draw abbreviated key (lattice, xyplot)
Both auto.key and simpleKey are convenience tools to make key drawing easy in 'typical' cases. For more flexibility, define the key as a list (the structure is described under 'key' in ?xyplot). You may want to look at ?Rows as well, in conjunction with trellis.par.get(). See ?splom and ?cloud for examples. You are not very explicit in your description, but perhaps your only problem with your second solution is that the first 5 levels are in alphabetical order (but you haven't said what order you want them to be in). This is an artifact of R's factor() function, where the levels are by default factor(x, levels = sort(unique.default(x), na.last = TRUE), ... So your problem may be solved simply by redefining your country variable appropriately: yourdata$country <- factor(as.character(yourdata$country), levels = c('USA', 'Germany', < ... >)) (the as.character() is probably redundant) Hope that helps, Deepayan On Thursday 18 March 2004 09:42, Vaclav Petricek wrote: > Hello > > I have been experimenting with xyplot, reading the help and googling > but I am still unable to draw an abbreviated key. > > I would like to display key for a few particular countries. > > My dataset looks like this > >year paperscountry papers.total > 1 1988403USA 551 > 2 1988 31 United Kingdom 551 > 3 1988 24 Canada 551 > 4 1988 20Netherlands 551 > 5 1988 19 Israel 551 > 6 1988 16Germany 551 > 7 1988 13 France 551 > 8 1988 10 Italy 551 > 9 1988 8Switzerland 551 > 10 1988 5 Japan 551 > 11 1988 5Denmark 551 > 12 1988 3 Spain 551 > 13 1988 3 Russia 551 > 14 1988 2 Sweden 551 > 15 1988 2 Poland 551 > 16 1988 2Finland 551 > 17 1988 2 Brasil 551 > 18 1988 2 Australia 551 > 19 1988 1 Thailand 551 > 20 1988 1 Norway 551 > 21 1988 1 Mexico 551 > 22 1988 1Ireland 551 > 23 1988 1 Greece 551 > 24 1989649USA 926 > 25 1989 53 United Kingdom 926 > 26 1989 43 France 926 > 27 1989 37 Canada 926 > 28 1989 36Germany 926 > 29 1989 28Netherlands 926 > 30 1989 19 Sweden 926 > [...] > > I use xyplot to show how many papers > > > xyplot(papers~year,groups=country,type='l',auto.key=T) > > produces an extremely long key > > > xyplot(papers~year,groups=country,type='l',key=simpleKey(levels(as. > >factor(country))[1:5])) > > shows *alphabetically* first five countries in the key > > > xyplot(papers~year,groups=country,type='l',key=simpleKey(c('USA','G > >ermany'))) > > displays correct countries but the colors obviously do not match. > > Could you please point me in the right direction? > > Vaclav > > __ > [EMAIL PROTECTED] mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] dsn
Margarida =?iso-8859-1?Q?Júlia?= Rodrigues Igreja wrote: Hi, I've finally got a DSN working on my ODBC installation and I've tested it with the ODBC DataManager so I'm sure it's working. However when trying to connect to the DSN via R interface I get an error: > odbcConnect("H:\\Desktop\\bd1",uid="tiago",pwd="archi",case="nochange",believeNRows=TRUE) If you have specified the DSN "bd1" using Windows' Control Panel, you don't need to specify any path - just specify the DSN itself, as in: odbcConnect("bd1",uid="tiago",pwd="archi",case="nochange",believeNRows=TRUE) Uwe Ligges [1] -1 Warning messages: 1: [RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver Manager]Data source name not found, and no default driver specified 2: ODBC connection failed in: odbcDriverConnect(paste("DSN=", dsn, ";UID=", uid, ";PWD=", pwd, Before the odbcCOnnect() command I gave the library(RODBC) command and it gave no error What am I missing? Margarida __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] two lme questions
1) I have the following data situation: 96 plots 12 varieties 2 time points 2 technical treatments the experiment is arranged as follows: a single plot has two varieties tested on it. if variety A on plot #1 has treatment T1 applied to it, then variety B on plot #1 has treatment T2 applied to it. across the whole experiment variety A is exposed to treatment T1 the same number of times as treatment T2. with respect to time points, plots come in 3 kinds. (1) varietyA, timepoint#1 vs. variety B, timepoint#1 (2) varietyA timepoint #2 vs. varietyB timepoint #2, and (3) varietyA timepoint #1 vs. variety A timepoint#2 plots and varieties are random samples from a population of plots and varieties, so they are random effects. The technical treatment and timepoints are fixed effects. i am particularly interested in the variance components for variety and timepoint within variety, in the estimate for the fixed stage effect and in the predictions (BLUP) for variety and stage within variety. My First Question is about specifying the random part of the lme() statement the fixed part is Measurement~Treatment+Time the random part, i think, should include random=~1|variety/time or equivalently(?) list(variety=~1,Time=~1) but how do i also specify that plot should be a random effect? it's not nested within variety, nor is variety nested within it. 2) I have fixed effects as above where each only has two kinds (2 Treatments, 2 Times). When I use lme and look at the estimates for the fixed effects I get output that looks like: >summary(asdf.lme) ... Fixed effects: Measurement ~ Treatment+Time ValueStd.Error ... (Intercept) xxx xxx TreatmentHotxxx xxx TimeEarly xxx xxx Correlation ... where my two treatments are Hot and Cold and my two times are Early and Late and the xxx are actual numbers. Why isnt there any line for the Cold treatment and the late time? is it because these necessarily are the opposite of the Hot and Early ones so putting them in would be redundant (i.e. Hot+Cold=0, Early+Late=0)? Thanks much, Scott Rifkin [EMAIL PROTECTED] __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] Draw abbreviated key (lattice, xyplot)
Hello I have been experimenting with xyplot, reading the help and googling but I am still unable to draw an abbreviated key. I would like to display key for a few particular countries. My dataset looks like this year paperscountry papers.total 1 1988403USA 551 2 1988 31 United Kingdom 551 3 1988 24 Canada 551 4 1988 20Netherlands 551 5 1988 19 Israel 551 6 1988 16Germany 551 7 1988 13 France 551 8 1988 10 Italy 551 9 1988 8Switzerland 551 10 1988 5 Japan 551 11 1988 5Denmark 551 12 1988 3 Spain 551 13 1988 3 Russia 551 14 1988 2 Sweden 551 15 1988 2 Poland 551 16 1988 2Finland 551 17 1988 2 Brasil 551 18 1988 2 Australia 551 19 1988 1 Thailand 551 20 1988 1 Norway 551 21 1988 1 Mexico 551 22 1988 1Ireland 551 23 1988 1 Greece 551 24 1989649USA 926 25 1989 53 United Kingdom 926 26 1989 43 France 926 27 1989 37 Canada 926 28 1989 36Germany 926 29 1989 28Netherlands 926 30 1989 19 Sweden 926 [...] I use xyplot to show how many papers > xyplot(papers~year,groups=country,type='l',auto.key=T) produces an extremely long key > xyplot(papers~year,groups=country,type='l',key=simpleKey(levels(as.factor(country))[1:5])) shows *alphabetically* first five countries in the key > xyplot(papers~year,groups=country,type='l',key=simpleKey(c('USA','Germany'))) displays correct countries but the colors obviously do not match. Could you please point me in the right direction? Vaclav __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] dsn
Hi, I've finally got a DSN working on my ODBC installation and I've tested it with the ODBC DataManager so I'm sure it's working. However when trying to connect to the DSN via R interface I get an error: > odbcConnect("H:\\Desktop\\bd1",uid="tiago",pwd="archi",case="nochange",believeNRows=TRUE) [1] -1 Warning messages: 1: [RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver Manager]Data source name not found, and no default driver specified 2: ODBC connection failed in: odbcDriverConnect(paste("DSN=", dsn, ";UID=", uid, ";PWD=", pwd, Before the odbcCOnnect() command I gave the library(RODBC) command and it gave no error What am I missing? Margarida __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] Re: projection pursuit
Luis, See the fastICA package, in particular the final example in the function fastICA's help page. This doesn't leave you with density estimates, but with projection-pursuit directions; you still have to figure out how to fit a density estimate to the rotated data. Actually, as I understand it, XGobi also finds directions but does not fit a density. However, any multivariate density estimator ought to be applicable. I'm not aware at the moment of the tools R offers for multivariate density estimation, but I'm sure there are multiple possibilities. _The Elements of Statistical Learning_ by Hastie, Tibshirani, and Friedman mention a "trick" to use classification tools (which model class probabilities) to estimate density. Fundamentally, generate data from a reference distribution, and use the classification tool to estimate probability of observed data (as opposed to generated data) as a function of the inputs. These probabilities, normalized to integrate to 1, form a density estimate. Since there are so very many classification tools available, this trick offers a lot of flexibility. Good luck. Jim Garrett Baltimore, Maryland, USA ** This message is intended only for the designated recipient(s...{{dropped}} __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] don't stop when error occurs
Look up ?try Regards Wayne -Original Message- From: pastaska1934 [mailto:[EMAIL PROTECTED] Sent: 18 March 2004 14:36 To: [EMAIL PROTECTED] Subject: [R] don't stop when error occurs hi, i'm doing some bootstraping on a data set, using kmeans for each bootstrap, i mean i do a loop(200 times) and in each loop i use kmeans. i have to count some occurences in a matrix result, but somentimes kmeans fail, cause of the algorithm. so i would like to avoid my function to stop on kmeans error is there a way to do such a thing? like if(kmeans()=error)continue or if(kmeans != -1) go on thanks sebeuu^^ __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html KSS Ltd Seventh Floor St James's Buildings 79 Oxford Street Manchester M1 6SS England Company Registration Number 2800886 Tel: +44 (0) 161 228 0040 Fax: +44 (0) 161 236 6305 mailto:[EMAIL PROTECTED]http://www.kssg.com The information in this Internet email is confidential and m...{{dropped}} __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] don't stop when error occurs
Read ?try, ?tryCatch, as well as the posting guide mentioned in the footer. Andy > From: pastaska1934 > > hi, > i'm doing some bootstraping on a data set, using kmeans for > each bootstrap, > i mean i do a loop(200 times) and in each loop i use kmeans. > i have to count some occurences in a matrix result, > but somentimes kmeans fail, cause of the algorithm. > so i would like to avoid my function to stop on kmeans error > is there a way to do such a thing? > like > if(kmeans()=error)continue > or > if(kmeans != -1) go on > > thanks > > sebeuu^^ > > __ > [EMAIL PROTECTED] mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html > > -- Notice: This e-mail message, together with any attachments,...{{dropped}} __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] don't stop when error occurs
You can do that easily with 'try' ?try 'try' is a wrapper to run an expression that might fail and allow the user's code to handle error-recovery. HTH, Andy __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] cannot allocate vector
"Matt Loveland" <[EMAIL PROTECTED]> writes: > I'm having trouble with glmmPQL. > > I'm fitting a 2 level random intercept model, with 90,000 cases and > about 330 groups. I'm unable to get any results on the full data > set. I can get it to work if I sample down to about 30,000 cases. > But for models with N's much larger than that I get the following > warning message: > > > m3=glmmPQL(prepfood~iage+iemployed+iwhite+ieduclevl+imarried+servcomm+leadgrup+leadsty4, > family=binomial, random=~1|congrega1,data=data) > Error: cannot allocate vector of size 4135 Kb > In addition: Warning message: > Reached total allocation of 253Mb: see help(memory.size) It may be possible to fit the model on your current machine with the current setting using function GLMM from package lme4. This function by default uses essentially the same algorithm as glmmPQL from MASS (iteratively weighted calls to lme) but it employs a different version of lme (glmmPQL calls lme from the nlme package while GLMM calls a more efficient representation in the lme4 package itself). Finally, there is yet another implementation of lme in development - a version that is more economical in storage, more flexible in the model structures that can be fit (for those who have been waiting, yes it can fit models with crossed and partially crossed random effects using a reasonable syntax and data representation), and is fast. On models fit to large data sets this version is remarkably fast. Our schedule is to release new versions of the lme4 and Matrix packages with R-1.9.0 (2004-04-04). Please contact me off-list if you want to participate in testing these packages or if you can provide data for our testing. -- Douglas Bates[EMAIL PROTECTED] Statistics Department608/262-2598 University of Wisconsin - Madisonhttp://www.stat.wisc.edu/~bates/ __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] don't stop when error occurs
hi, i'm doing some bootstraping on a data set, using kmeans for each bootstrap, i mean i do a loop(200 times) and in each loop i use kmeans. i have to count some occurences in a matrix result, but somentimes kmeans fail, cause of the algorithm. so i would like to avoid my function to stop on kmeans error is there a way to do such a thing? like if(kmeans()=error)continue or if(kmeans != -1) go on thanks sebeuu^^ __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] tapply
[EMAIL PROTECTED] wrote: Question: is there a function that average in a single step over the 3 columns? You may look for ?aggregate Thomas P. __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] tapply
Try this (untested): aggregate( data[,6:8], list(date = as.matrix(data[,1:3]) %*% c(1,100,1)), mean ) --- Date: Thu, 18 Mar 2004 09:39:02 +0100 From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Subject: [R] tapply Dear all I have a dataframe containing hourly data of 3 parameters. I would like to create a dataframe containg daily mean values of these parameters. Additionally I want to keep information about time of measurement ("year","month","day"). With the function tapply I can average over a column of the dataframe. I can repeat the function 2 time and merge the vectors. In this way I obtain my new dataframe (see below).If I want to add the column day, month and year I can repeat tapply other three time. This system works. Question: is there a function that average in a single step over the 3 columns? Thanks a lot for your answer! Regards Mike Campana read the data setwd("c:/R") data <- NULL data <- as.data.frame(read.table(file="Montreal.txt",header=F,skip=15)) colnames(data) <-c("year","month","day","hour","min","temp","press","ozone") ### create mean value temp_daily <- tapply(data$temp,data$year*1+data$month*100+data$day,FUN=mean) press_daily <- tapply(data$press,data$year*1+data$month*100+data$day,FUN=mean) ozone_daily <- tapply(data$ozone,data$year*1+data$month*100+data$day,FUN=mean) ### merge the data newdata <- as.data.frame (cbind(temp_daily,temp_daily,temp_daily)) __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] Install R on Mac OS.X
In what way does 1.8.1 not work for your friend? Andrew On Thursday 18 March 2004 02:01, Tor A Strand wrote: > I am running R 1.8.1 flawlessly on my mac with OS.X.3 > > My friend is running 1.6.1 but it is impossible for him to make 1.8.1 > work. I do not understand why it should work better in my computer. I > do, however, have X.11 installed, he doesnt, could that be an issue and > if it is, does it suffice to install X.11 after RAqua has been > installed? > > Tor A Strand, MD PhD > Centre for International Health > University of Bergen > Norway > > __ > [EMAIL PROTECTED] mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html -- Andrew Robinson Ph: 208 885 7115 Department of Forest Resources Fa: 208 885 6226 University of Idaho E : [EMAIL PROTECTED] PO Box 441133W : http://www.uidaho.edu/~andrewr Moscow ID 83843 Or: http://www.biometrics.uidaho.edu No statement above necessarily represents my employer's opinion. __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] R and package don't know they're built on same system
"Liaw, Andy" <[EMAIL PROTECTED]> writes: > One thing to make sure is that all compilers used match; i.e., all 32-bit or > all 64-bit. On our SLES8 pre-installed on Opteron, g++ was left out of the > 64-bit toolchain. R itself compiled fine (as 64-bit), but some packages > failed to install. It was strange because the packages were built, but > failed to load. I was only able to track it down because I happen to know > that the packages that failed contain C++ code, so they were compiled with > the 32-bit g++, and thus cannot be loaded into 64-bit R. Not sure which system Ross is referring to (i.e. built from scratch, or a distribution?) but there are bi-arch systems for the Opteron which get confused. This, along with Andy's guess about g++, suggest the possibility of a mix-up. best, -tony -- [EMAIL PROTECTED]http://www.analytics.washington.edu/ Biomedical and Health Informatics University of Washington Biostatistics, SCHARP/HVTN Fred Hutchinson Cancer Research Center UW (Tu/Th/F): 206-616-7630 FAX=206-543-3461 | Voicemail is unreliable FHCRC (M/W): 206-667-7025 FAX=206-667-4812 | use Email CONFIDENTIALITY NOTICE: This e-mail message and any attachme...{{dropped}} __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] Re: nnet classification accuracy vs. other models
I believe the paper below did a comparison relevant to your question but possibly not exactly what you are asking (I'm not sure that nnet is artificial neural networks - on of the techniques compared in the paper). Hope this helps Volker Moisen G. G., and T. S. Frescino. 2002. Comparing five modelling techniques for predicting forest characteristics. Ecological Modelling 157(2-3):209-225. ___ Volker Bahn Dept. of Wildlife Ecology - Rm. 210 University of Maine 5755 Nutting Hall Orono, Maine 04469-5755, USA Tel. (207) 581 2799 Fax: (207) 581 2858 [EMAIL PROTECTED] http://www.wle.umaine.edu/used_text%20files/Volker%20Bahn/home.htm - Original Message - From: "Albedo" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Saturday, March 13, 2004 16:06 Subject: nnet classification accuracy vs. other models | I was wandering if anybody ever tried to compare the classification | accuracy of nnet to other (rpart, tree, bagging) models. From what I | know, there is no reason to expect a significant difference in | classification accuracy between these models, yet in my particular case | I get about 10% error rate for tree, rpart and bagging model and 80% | error rate for nnet, applied to the same data. | | Thanks. | __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] help with file
MARGARET GALIETTI wrote: Hi, I am new at R, and I need some help with some basic stuff. I want to do clustering of data. It works perfectly, but now I want to export my file form R to my Linux directory. The problem is that the file is generated only with the cluster numbers, but it does not carry over the identifiers. Let me show you what I did : 1. demo<-read.table("my_table", sep=",", header=TRUE) # I imported my table into R as a data frame. I had header and one of my columns was called KEYS; this was the unique identifier for my data. 2. #clustering part >names(demo) >dm<-dist(demo[,c(3,4,5)]) >names(dm)<-demo[,2]#the unique Id called KEYS is in my column number 2 >cluster<-hclust(dm) >plot(cluster)#my data is displayed in dendogram 3. Now I want to see the breakdowns; I want to see every unique KEYS and corresponding cluster number >result<-cutree(cluster, h =1) >result #I can see KEYS and corresponding cluster numbers 4. Now I want to export this info out of R into a file How do I do this??? I am going CRAZY. All I get is the cluster numbers but not the KEYS. HELP!!! Margaret [[alternative HTML version deleted]] __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html See ?write.table. Or ?sink for redirecting R's output, and ?dump for saving R objects Uwe Ligges __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] (BRMA) Mensagem não autorizada
Mensagem não autorizada Mensagem possui anexo proibido na lista (\.pif) Para: [EMAIL PROTECTED] Assunto: Re: Re: Re: Your document __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] R and package don't know they're built on same system
You may also want to check why the error message refers to Rpmi, since you said you have just built Rmpi, not the same thing! Something is wrong about the story we are being told: if that is really the error message which was produced then pilot error is involved, and if not inaccurate reporting is involved. My guess is that there is a 32-bit package (sic, not library) Rpmi. On Thu, 18 Mar 2004, Liaw, Andy wrote: > One thing to make sure is that all compilers used match; i.e., all 32-bit or > all 64-bit. On our SLES8 pre-installed on Opteron, g++ was left out of the > 64-bit toolchain. R itself compiled fine (as 64-bit), but some packages > failed to install. It was strange because the packages were built, but > failed to load. I was only able to track it down because I happen to know > that the packages that failed contain C++ code, so they were compiled with > the 32-bit g++, and thus cannot be loaded into 64-bit R. > > HTH, > Andy > > > From: Ross Boylan > > > > I just had the interesting experience of building a package and R on > > the same system, and having R refuse to load the resultant dynamic > > library because it was thought to be for a different system. > > > > The system was non-standard and beta, being a Linux-based 64 bit > > Opteron system. It uses the gnu tool chain. The dynamic library was > > built from C source. > > > > When I tried to load the library R (1.8.1) complained > > "package Rpmi was built for i686-pc-linux-gnu" > > Inspection of R.version$platform, which is the thing the i686 is > > being compared to, shows that it is x86_64-unknown-linux-gnu. > > > > I worked around this by removing the test causing the error (in > > library.R), but, considering I built both R and Rmpi (an unofficial > > version 0.4.6 from the author) within minutes of each other, it was > > very surprising to find they had different notions of their system. > > > > Any idea what's behind this, or how to fix it? -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UKFax: +44 1865 272595 __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] SVM question
Hi! I have a question concerning the svm in the e1071 package. I trained the svm by a set of samples, doing a 10 cross validation. The summary function then prints out the total accuracy and single accuracies, works fine. My question is then: Is it possible to get classification results per cross validation out the svm? I mean e.g. numbers about the true positives ,fp,fn,tf ? How do I get a list of the classified examples ? Thanks, -- Frank G. Zoellner AG Angewandte Informatik Technische Fakult"at Universit"at Bielefeld phone: +49(0)521-106-2951 fax: +49(0)521-106-2992 email: [EMAIL PROTECTED] __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] R-business case
> > Just to be provocative, it would be best to state the ultimate goals, then > R users could be of more help. We have submitted and published articles > using R and are using R in production work on contracts from > pharmaceutical companies. It's difficult to know from the original note > why we should spend time compiling such data. Is anyone finding that R > has some deficiencies with respect to their own work? > All the analysis I do is done with R, so anything published where I am in the author list is likely to have been done/revised with R. The fact than R requires me to know what I am doing is more of an advantage, IMHO, rather than a shortcoming... from a usability standpoint I never felt I had any problem I could not deal with after some thinking, or asking the list. Regards, Federico Calboli -- = Federico C. F. Calboli Dipartimento di Biologia Via Selmi 3 40126 Bologna Italy tel (+39) 051 209 4187 fax (+39) 051 251 4286 f.calboli at ucl.ac.uk __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] R and package don't know they're built on same system
One thing to make sure is that all compilers used match; i.e., all 32-bit or all 64-bit. On our SLES8 pre-installed on Opteron, g++ was left out of the 64-bit toolchain. R itself compiled fine (as 64-bit), but some packages failed to install. It was strange because the packages were built, but failed to load. I was only able to track it down because I happen to know that the packages that failed contain C++ code, so they were compiled with the 32-bit g++, and thus cannot be loaded into 64-bit R. HTH, Andy > From: Ross Boylan > > I just had the interesting experience of building a package and R on > the same system, and having R refuse to load the resultant dynamic > library because it was thought to be for a different system. > > The system was non-standard and beta, being a Linux-based 64 bit > Opteron system. It uses the gnu tool chain. The dynamic library was > built from C source. > > When I tried to load the library R (1.8.1) complained > "package Rpmi was built for i686-pc-linux-gnu" > Inspection of R.version$platform, which is the thing the i686 is > being compared to, shows that it is x86_64-unknown-linux-gnu. > > I worked around this by removing the test causing the error (in > library.R), but, considering I built both R and Rmpi (an unofficial > version 0.4.6 from the author) within minutes of each other, it was > very surprising to find they had different notions of their system. > > Any idea what's behind this, or how to fix it? > > __ > [EMAIL PROTECTED] mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html > > -- Notice: This e-mail message, together with any attachments,...{{dropped}} __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] reading short int and float from binary connection
Angel Lopez wrote: > Thanks for the advise. > I think I've found the solution, the problem was that the file had been > written from a C program using a structure containing floats and int, if > I rewrite the C code not using a structure but independent floats and > ints the data then is read smoothly into R. I still can't figure out why > a structure is different or how should I have read it into R but it is > probably more a C than an R question . > You're probably right there. A C structure may be silently aligned by the compiler so that value fields are not contiguous in memory. A binary write of such a structure cannot be assumed to have bytes in the same order described in the structure definition. Jim __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] Install R on Mac OS.X
I am running R 1.8.1 flawlessly on my mac with OS.X.3 My friend is running 1.6.1 but it is impossible for him to make 1.8.1 work. I do not understand why it should work better in my computer. I do, however, have X.11 installed, he doesnt, could that be an issue and if it is, does it suffice to install X.11 after RAqua has been installed? Tor A Strand, MD PhD Centre for International Health University of Bergen Norway __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] R and package don't know they're built on same system
Ross Boylan <[EMAIL PROTECTED]> writes: > I just had the interesting experience of building a package and R on > the same system, and having R refuse to load the resultant dynamic > library because it was thought to be for a different system. > > The system was non-standard and beta, being a Linux-based 64 bit > Opteron system. It uses the gnu tool chain. The dynamic library was > built from C source. > > When I tried to load the library R (1.8.1) complained > "package Rpmi was built for i686-pc-linux-gnu" > Inspection of R.version$platform, which is the thing the i686 is > being compared to, shows that it is x86_64-unknown-linux-gnu. > > I worked around this by removing the test causing the error (in > library.R), but, considering I built both R and Rmpi (an unofficial > version 0.4.6 from the author) within minutes of each other, it was > very surprising to find they had different notions of their system. > > Any idea what's behind this, or how to fix it? Hmm... It's probably not grabbing the i686-pc-linux-gnu out of nowhere, so consider whether it might be picking up another package of the same name somewhere along your library path, or see if the string appears in the package you built. In the latter case, you need to investigate the build process in detail. -- O__ Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] logistic regression with temporal correlation
This is not `temporal correlation'. You can supply a weights argument to glm and so downweight older observations. Since the theory is no longer exactly apposite, treat the standard errors etc with some caution. On Thu, 18 Mar 2004 [EMAIL PROTECTED] wrote: > We would like to perform a logistic regression analysis weighting the > independent variable in a temporal fashion, i.e. events occuring most > recent get highest weight. Does anyone know how to do this in R?? > > Regards > S. Merser and S. Lophaven -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UKFax: +44 1865 272595 __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
RE: [R] logistic regression with temporal correlation
Hello, You can either use nls and add weights see ?nls. Or use a generalized linear model and also change the weights. se ?glm Regards Wayne -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: 18 March 2004 08:37 To: [EMAIL PROTECTED] Subject: [R] logistic regression with temporal correlation Hello We would like to perform a logistic regression analysis weighting the independent variable in a temporal fashion, i.e. events occuring most recent get highest weight. Does anyone know how to do this in R?? Regards S. Merser and S. Lophaven __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html KSS Ltd Seventh Floor St James's Buildings 79 Oxford Street Manchester M1 6SS England Company Registration Number 2800886 Tel: +44 (0) 161 228 0040 Fax: +44 (0) 161 236 6305 mailto:[EMAIL PROTECTED]http://www.kssg.com The information in this Internet email is confidential and m...{{dropped}} __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] tapply
Dear all I have a dataframe containing hourly data of 3 parameters. I would like to create a dataframe containg daily mean values of these parameters. Additionally I want to keep information about time of measurement ("year","month","day"). With the function tapply I can average over a column of the dataframe. I can repeat the function 2 time and merge the vectors. In this way I obtain my new dataframe (see below).If I want to add the column day, month and year I can repeat tapply other three time. This system works. Question: is there a function that average in a single step over the 3 columns? Thanks a lot for your answer! Regards Mike Campana read the data setwd("c:/R") data <- NULL data <- as.data.frame(read.table(file="Montreal.txt",header=F,skip=15)) colnames(data) <-c("year","month","day","hour","min","temp","press","ozone") ### create mean value temp_daily <- tapply(data$temp,data$year*1+data$month*100+data$day,FUN=mean) press_daily <- tapply(data$press,data$year*1+data$month*100+data$day,FUN=mean) ozone_daily <- tapply(data$ozone,data$year*1+data$month*100+data$day,FUN=mean) ### merge the data newdata <- as.data.frame (cbind(temp_daily,temp_daily,temp_daily)) --- --- --- --- --- __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] logistic regression with temporal correlation
Hello We would like to perform a logistic regression analysis weighting the independent variable in a temporal fashion, i.e. events occuring most recent get highest weight. Does anyone know how to do this in R?? Regards S. Merser and S. Lophaven __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] cannot allocate vector
On Wed, 17 Mar 2004, Matt Loveland wrote: > I'm having trouble with glmmPQL. I think you are having trouble with memory limits, actually. As the author of glmmPQL, I don't appreciate my code being blamed for something else. > I'm fitting a 2 level random intercept model, with 90,000 cases and about 330 > groups. I'm unable to get any results on the full data set. I can get it to work > if I sample down to about 30,000 cases. But for models with N's much larger than > that I get the following warning message: > > > m3=glmmPQL(prepfood~iage+iemployed+iwhite+ieduclevl+imarried+servcomm+leadgrup+leadsty4, > family=binomial, random=~1|congrega1,data=data) > Error: cannot allocate vector of size 4135 Kb > In addition: Warning message: > Reached total allocation of 253Mb: see help(memory.size) > > I've tried increasing my virtual memory size, and also defragmenting my > hard drive. It hasn't helped. I've seen other people asking similar > questions on the archive, but it seems that this problem should have > gone away after earlier versions of R, is that right? Do read the page it asks you too. You are on Windows, and you need to use the --max-mem-size flag when starting R to increase the memory available to R. However, if you do swapping may make your machine nigh unusable. What did you not understand about help(memory.size)? This is also in the rw-FAQ: what in that did you not understand? > Is this a data problem, am I fitting a bad model, or is it a memory size > problem. I'm hoping the last one, and any help is appreciated. Yes, so try a machine with 2Gb RAM. -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UKFax: +44 1865 272595 __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] Question: Assigning the values of a time series to another one with dif. length and resolution
Hi, I have two time series organized in matixes data.1 and data.2. They have different length and resolution. matrix data.1 t1 v1 t3 v3 t5 v5 ... matrix data.2 t1 0 t2 0 t3 0 ... desired result: data.2 t1 v1 t2 0 t3 v3 ... What is the MOST EFFECTIVE way (since the matrixes are very large) to assign the values of data.1 to data.2 whenever time values are equal? Thanks for your help, Helge P.S: My solution so far: for ( i in 1 : nrow(data.1) ) { index <- which ( data.2[,1] == data.1[i,1] ) data.2[index,2] <- data.1[i,2] } _ Swiss Federal Institute for Environmental Science and Technology (EAWAG) Dept. of Engineering Sciences Helge Daebel EAWAG, ING - CB D35 Ueberlandstrasse 133 CH-8600 Dübendorf, Switzerland phone: +41 1 823 5052 fax: +41 1 823 5389 mail: [EMAIL PROTECTED] http: www.eawag.ch/research_e/ing/uwe/daebel/bivariate_probability.htm __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[R] R and package don't know they're built on same system
I just had the interesting experience of building a package and R on the same system, and having R refuse to load the resultant dynamic library because it was thought to be for a different system. The system was non-standard and beta, being a Linux-based 64 bit Opteron system. It uses the gnu tool chain. The dynamic library was built from C source. When I tried to load the library R (1.8.1) complained "package Rpmi was built for i686-pc-linux-gnu" Inspection of R.version$platform, which is the thing the i686 is being compared to, shows that it is x86_64-unknown-linux-gnu. I worked around this by removing the test causing the error (in library.R), but, considering I built both R and Rmpi (an unofficial version 0.4.6 from the author) within minutes of each other, it was very surprising to find they had different notions of their system. Any idea what's behind this, or how to fix it? __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] why-s of method dispatching
On Wed, 17 Mar 2004, Vadim Ogranovich wrote: > I am having a problem to understand why as.data.frame method doesn't > dispatch properly on my class: > > > setClass("Foo", "character") > [1] "Foo" > > as.data.frame(list(foo=new("Foo", .Data="a"))) > Error in as.data.frame.default(x[[i]], optional = TRUE) : > can't coerce Foo into a data.frame > > I was expecting that this would call as.data.frame.character. You have set an S4 class and as.data.frame is an S3 generic. > list(foo=new("Foo", .Data="a")) $foo An object of class "Foo" [1] "a" and what as.data.frame sees is > attributes(list(foo=new("Foo", .Data="a"))$foo) $class [1] "Foo" attr(,"package") [1] ".GlobalEnv" so thinks this is an S3 class it knows nothing about. > Another puzzle. If I explicitly call as.data.frame.character() it would > fail but for a different reason: > > > as.data.frame.character(list(foo=new("Foo", .Data="a"))) > Error in unique.default(x) : unique() applies only to vectors > > I was under an impression that an instance of "Foo" would be welcome > anywhere a "character" was, but it seems to be more subtle. What am I > missing? The difference between S3 and S4 classes. -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UKFax: +44 1865 272595 __ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html