Hi, R 1.0.1, on Linux(mandrake/RedHat). I am trying to write my first function using R and I need help figuring out the error I have indicated in the Subject line above. The purpose of the function is not to "wow" anyone, but just to serve as a stepping stone so that I might write more complicated functions in the future. First I created my function named "CIfunc" and saved into the current directory using the "save" command. function(Mean, SD, N, Sig) { if (N > 30) { Zscore <- pnorm(Sig)} else {Zscore <- pt(Sig,N-1)} Zscore UpperCI <- Mean + Zscore * SD / sqrt(N) UpperCI LowerCI <- Mean - Zscore * SD / sqrt(N) LowerCI } ...with no error. Next I write the function call "testcall": testcall <- call('CIfunc', prescan10$F532Mean, prescan10$F532SD, prescan10$FPixels, 0.95) ...with no error. testcall CIfunc(c(189, 238, 363, 869, 585, 350, 3624, 290, 436, 517), c(63, 58, 66, 127, 78, 46, 1452, 72, 83, 55), c(120, 120, 120, 120, 120, 120, 120, 120, 120, 120), 0.95) But when I try to evaluate the function "CIfunc": eval(testcall) I get the error: "Error in eval(expr, envir, enclos) : couldn't find function "CIfunc"" As I understand it, I saved the "CIfunc" in the directory I opened R from. Do I need to set an environment variable to use functions in R? steve -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
Steve Arthur <sarthur at crick.protogene.com> writes:> First I created my function named "CIfunc" and saved into the current > directory using the "save" command....> As I understand it, I saved the "CIfunc" in the directory I opened R from. > > Do I need to set an environment variable to use functions in R?No, but you need to understand that R uses a workspace based model. Generally you just define objects in the current workspace and use them, and you can save them on closing and restore upon restart. You can also save objects (potentially several) to a file, but it is not reloaded automatically, you have to use load() to get the objects back. -- O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
On Wed, 5 Jul 2000, Steve Arthur wrote:> Hi, > > R 1.0.1, on Linux(mandrake/RedHat). > > I am trying to write my first function using R and I need help figuring > out the error I have indicated in the Subject line above. The purpose > of the function is not to "wow" anyone, but just to serve as a stepping > stone so that I might write more complicated functions in the future. > > First I created my function named "CIfunc" and saved into the current > directory using the "save" command. > > function(Mean, SD, N, Sig) { > > if (N > 30) { Zscore <- pnorm(Sig)} else {Zscore <- pt(Sig,N-1)} > Zscore > > UpperCI <- Mean + Zscore * SD / sqrt(N) > UpperCI > > LowerCI <- Mean - Zscore * SD / sqrt(N) > LowerCI > > } > > ...with no error. > > Next I write the function call "testcall": > > testcall <- call('CIfunc', prescan10$F532Mean, prescan10$F532SD, > prescan10$FPixels, 0.95) > > ...with no error. > > testcall CIfunc(c(189, 238, 363, 869, 585, 350, 3624, 290, 436, 517), > c(63, 58, 66, 127, 78, 46, 1452, 72, 83, 55), c(120, 120, 120, 120, 120, > 120, 120, 120, 120, 120), 0.95) > > But when I try to evaluate the function "CIfunc": > > eval(testcall) > > I get the error: > > "Error in eval(expr, envir, enclos) : couldn't find function "CIfunc"" > > As I understand it, I saved the "CIfunc" in the directory I opened R from. > > Do I need to set an environment variable to use functions in R? >Unless you're trying to do something very complicated that I don't understand this is a lot simpler than you're making it. You don't have to write the function to a file. You don't need to use call(), and you don't need eval(). You just want to type CIfunc(prescan10$F532Mean, prescan10$F532SD, prescan10$FPixels, 0.95) It's not clear why your function didn't work, but I suspect it's what Peter Dalgaard suggested. You need to have the function defined in the workspace -- having it on disk doesn't help at all. The point of call() and eval() is to allow functions to manipulate other functions and expressions, which is an important part of the language, but probably not an ideal subject for your first function. :) -thomas -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._