Dear R users:
I have a problem about catch the value from function.
I have following two functions (part):
fbolus1 <- function()
{.........
par<-data.frame(Parameter=c("kel","Vd"),Initial=c(0))
check(par)
.....}
check<-function(par)
{
if (par[ ,2] <= 0){
cat("\nEnter again (y/n) ?\n\n")
ans<-readline()
if (ans == "n" ){
return(tidy.up())
}
else{
cat("\n")
par<-edit(par)
}
}
}
I wonder if it is possible to catch the value ("par" in this example) which
"check" function generated and than go back to the "fbolus1" function, and
keep executing the command next to "check(par)", and "fbolus1" function can
accept the value "check" function generated. If it is possible, please give me
some comments. Thanks in advance !!
How to catch value
3 messages · Chun-Ying Lee, Kristel Joossens, Martin Maechler
You can have a look at https://stat.ethz.ch/pipermail/r-help/2005-November/082060.html There are at least 2 ways to solve your problem First, you can also make use of the assign function I refer here to R> ?assign After editting par assing the value of par to the variable name "par" by par<-edit(par) assign("par",par, envir = .GlobalEnv) Secondly, similar to assign, you can also use <<- I refer here to R> help("<<-") par<<-edit Good luck, Kristel
Chun-Ying Lee wrote:
Dear R users:
I have a problem about catch the value from function.
I have following two functions (part):
fbolus1 <- function()
{.........
par<-data.frame(Parameter=c("kel","Vd"),Initial=c(0))
check(par)
.....}
check<-function(par)
{
if (par[ ,2] <= 0){
cat("\nEnter again (y/n) ?\n\n")
ans<-readline()
if (ans == "n" ){
return(tidy.up())
}
else{
cat("\n")
par<-edit(par)
}
}
}
I wonder if it is possible to catch the value ("par" in this example) which
"check" function generated and than go back to the "fbolus1" function, and
keep executing the command next to "check(par)", and "fbolus1" function can
accept the value "check" function generated. If it is possible, please give me
some comments. Thanks in advance !!
------------------------------------------------------------------------
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
"Chun-Ying" == Chun-Ying Lee <u9370004 at cc.kmu.edu.tw>
on Sat, 3 Dec 2005 17:23:35 +0800 writes:
Chun-Ying> Dear R users:
Chun-Ying> I have a problem about catch the value from function.
The basic concepts of good S (and hence R) programming are
1) all functions should return their
result, either explicitly via return() -- or "S like" by just
have it the last expression ("last line") of your function.
2) You *assign* the result of all your functions:
res <- myfunc(....)
There are very few exceptions to this (where Kristels's advice
would apply), but in your case (and in *most*), do *not* use
assign nor "<<-".
Chun-Ying> I have following two functions (part):
Chun-Ying> fbolus1 <- function()
Chun-Ying> {.........
Chun-Ying> par<-data.frame(Parameter=c("kel","Vd"),Initial=c(0))
Chun-Ying> check(par)
replace the line above with
par <- check(par)
Chun-Ying> .....}
Chun-Ying> check<-function(par)
Chun-Ying> {
Chun-Ying> if (par[ ,2] <= 0){
Chun-Ying> cat("\nEnter again (y/n) ?\n\n")
Chun-Ying> ans<-readline()
Chun-Ying> if (ans == "n" ){
Chun-Ying> return(tidy.up())
Chun-Ying> }
Chun-Ying> else{
Chun-Ying> cat("\n")
Chun-Ying> par<-edit(par)
just replace the line above with
return(edit(par))
Chun-Ying> }
Chun-Ying> }
Chun-Ying> }
Chun-Ying> I wonder if it is possible to catch the value ("par" in this example) which
Chun-Ying> "check" function generated and than go back to the "fbolus1" function, and
Chun-Ying> keep executing the command next to "check(par)", and "fbolus1" function can
Chun-Ying> accept the value "check" function generated. If it is possible, please give me
Chun-Ying> some comments. Thanks in advance !!
You're welcome.
Martin Maechler, ETH Zurich