Tao Shi
2010-Apr-02 17:36 UTC
[R] lineplot.CI in "sciplot": option "ci.fun" can't be changed?
hi List and Manuel, I have encounter the following problem with the function "lineplot.CI".? I'm running R 2.10.1, sciplot 1.0-7 on Win XP.? It seems like it's a scoping issue, but I couldn't figure it out. Thanks! ...Tao> lineplot.CI(x.factor = dose, response = len, data = ToothGrowth)??? ## fine > lineplot.CI(x.factor = dose, response = len, data = ToothGrowth, fun=median)? ## fine > lineplot.CI(x.factor = dose, response = len, data = ToothGrowth, fun=mean)? ## fine > lineplot.CI(x.factor = dose, response = len, data = ToothGrowth, ci.fun= function(x) c(fun(x)-2*se(x), fun(x)+2*se(x)))? ## failed!Error in FUN(X[[1L]], ...) : could not find function "fun"> debug(lineplot.CI) > lineplot.CI(x.factor = dose, response = len, data = ToothGrowth, ci.fun= function(x) c(fun(x)-2*se(x), fun(x)+2*se(x))).... .... .... .... Browse[2]> debug: mn.data <- tapply(response, groups, fun) Browse[2]> debug: CI.data <- tapply(response, groups, ci.fun) Browse[2]> fun function (x) mean(x, na.rm = TRUE) <environment: 0x07178640> Browse[2]> ci.fun function(x) c(fun(x)-2*se(x), fun(x)+2*se(x)) Browse[2]> debug(ci.fun) Browse[2]> fun function (x) mean(x, na.rm = TRUE) <environment: 0x07178640> Browse[2]> debugging in: FUN(X[[1L]], ...) debug: c(fun(x) - 2 * se(x), fun(x) + 2 * se(x)) Browse[3]> Error in FUN(X[[1L]], ...) : could not find function "fun"> undebug(lineplot.CI) > lineplot.CI(x.factor = dose, response = len, data = ToothGrowth, ci.fun= function(x) c(fun(x)-se(x), fun(x)+se(x)))Error in FUN(X[[1L]], ...) : could not find function "fun"> lineplot.CI(x.factor = dose, response = len, data = ToothGrowth, fun = function(x) mean(x, na.rm=TRUE),ci.fun= function(x) c(fun(x)-se(x), fun(x)+se(x)))Error in FUN(X[[1L]], ...) : could not find function "fun"> lineplot.CI(x.factor = dose, response = len, data = ToothGrowth, fun = function(x) median(x, na.rm=TRUE),ci.fun= function(x) c(fun(x)-se(x), fun(x)+se(x)))Error in FUN(X[[1L]], ...) : could not find function "fun" _________________________________________________________________ Hotmail has tools for the New Busy. Search, chat and e-mail from your inbox. N:WL:en-US:WM_HMP:042010_1
Manuel Morales
2010-Apr-02 18:22 UTC
[R] lineplot.CI in "sciplot": option "ci.fun" can't be changed?
For now, just change fun(x) to median(x) (or whatever) in your ci.fun() below. E.g. lineplot.CI(x.factor = dose, response = len, data = ToothGrowth, ci.funfunction(x) c(mean(x)-2*se(x), mean(x)+2*se(x))) Otherwise, maybe the list members could help with a solution. An example that illustrates the problem: ex.fn <- function(x, fun = mean, fun2 = function(x) fun(x)+sd(x)) { list(fun=fun(x), fun2=fun2(x)) } data <- rnorm(10) ex.fn(data) #works ex.fn(data, fun=median) #works ex.fn(data, fun2=function(x) fun(x)+3) #error with fun(x) not found On Fri, 2010-04-02 at 17:36 +0000, Tao Shi wrote:> hi List and Manuel, > > I have encounter the following problem with the function "lineplot.CI". I'm running R 2.10.1, sciplot 1.0-7 on Win XP. It seems like it's a scoping issue, but I couldn't figure it out. > > Thanks! > > ...Tao > > > > > lineplot.CI(x.factor = dose, response = len, data = ToothGrowth) ## fine > > lineplot.CI(x.factor = dose, response = len, data = ToothGrowth, fun=median) ## fine > > lineplot.CI(x.factor = dose, response = len, data = ToothGrowth, fun=mean) ## fine > > lineplot.CI(x.factor = dose, response = len, data = ToothGrowth, ci.fun= function(x) c(fun(x)-2*se(x), fun(x)+2*se(x))) ## failed! > Error in FUN(X[[1L]], ...) : could not find function "fun" > > > debug(lineplot.CI) > > lineplot.CI(x.factor = dose, response = len, data = ToothGrowth, ci.fun= function(x) c(fun(x)-2*se(x), fun(x)+2*se(x))) > .... > .... > .... > .... > Browse[2]> > debug: mn.data <- tapply(response, groups, fun) > Browse[2]> > debug: CI.data <- tapply(response, groups, ci.fun) > Browse[2]> fun > function (x) > mean(x, na.rm = TRUE) > <environment: 0x07178640> > Browse[2]> ci.fun > function(x) c(fun(x)-2*se(x), fun(x)+2*se(x)) > Browse[2]> debug(ci.fun) > Browse[2]> fun > function (x) > mean(x, na.rm = TRUE) > <environment: 0x07178640> > Browse[2]> > debugging in: FUN(X[[1L]], ...) > debug: c(fun(x) - 2 * se(x), fun(x) + 2 * se(x)) > Browse[3]> > Error in FUN(X[[1L]], ...) : could not find function "fun" > > undebug(lineplot.CI) > > lineplot.CI(x.factor = dose, response = len, data = ToothGrowth, ci.fun= function(x) c(fun(x)-se(x), fun(x)+se(x))) > Error in FUN(X[[1L]], ...) : could not find function "fun" > > lineplot.CI(x.factor = dose, response = len, data = ToothGrowth, fun = function(x) mean(x, na.rm=TRUE),ci.fun= function(x) c(fun(x)-se(x), fun(x)+se(x))) > Error in FUN(X[[1L]], ...) : could not find function "fun" > > lineplot.CI(x.factor = dose, response = len, data = ToothGrowth, fun = function(x) median(x, na.rm=TRUE),ci.fun= function(x) c(fun(x)-se(x), fun(x)+se(x))) > Error in FUN(X[[1L]], ...) : could not find function "fun" > > > > > > > _________________________________________________________________ > Hotmail has tools for the New Busy. Search, chat and e-mail from your inbox. > http://www.windowslive.com/campaign/thenewbusy?ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_1-- http://mutualism.williams.edu