Re: [R] Evaluation of variable assigned to a function name

2011-01-10 Thread Uwe Ligges
Wel, just let the user give the function in form of an argument, say 
foo, and use your code so that



bar - function(x, ., foo){
   if(missing(foo)) foo - Namespace::my.func
   .
}


but perhaps I misunderstood your question.

Uwe Ligges



On 10.01.2011 13:47, carol white wrote:

Hi,
I have defined a function (my.func) which is used as parameter (f) of another
function. As I want to give the user the possibility to define his own function
instead of my.func, how can I find out if in other functions, the parameter f
has the my.func value (if the user has defined a new function or not)?


Moreover, I think I should impose to the user to use another function name than
my.func for this (?). Or a boolean variable is better to be used to indicate if
my function (my.func) or user-defined function is used?

Thanks

Carol

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Evaluation of variable assigned to a function name

2011-01-10 Thread carol white
In fact, what the function is returning is the most important. So knowing that 
the parameters and the number of parameters of my.func defined by the user 
could 
be different from one definition to another, how to use what my.func returns in 
other functions? Moreover, if the function is defined by the user in an R 
session, it is then defined globally. In this case, does it need to be passed 
as 
a parameter? Note that my.func defined by me is loaded before.

Carol



- Original Message 
From: Uwe Ligges lig...@statistik.tu-dortmund.de
To: carol white wht_...@yahoo.com
Cc: r-h...@stat.math.ethz.ch
Sent: Mon, January 10, 2011 2:11:48 PM
Subject: Re: [R] Evaluation of variable assigned to a function name

Wel, just let the user give the function in form of an argument, say 
foo, and use your code so that


bar - function(x, ., foo){
if(missing(foo)) foo - Namespace::my.func
.
}


but perhaps I misunderstood your question.

Uwe Ligges



On 10.01.2011 13:47, carol white wrote:
 Hi,
 I have defined a function (my.func) which is used as parameter (f) of another
 function. As I want to give the user the possibility to define his own 
function
 instead of my.func, how can I find out if in other functions, the parameter f
 has the my.func value (if the user has defined a new function or not)?


 Moreover, I think I should impose to the user to use another function name 
than
 my.func for this (?). Or a boolean variable is better to be used to indicate 
if
 my function (my.func) or user-defined function is used?

 Thanks

 Carol

 __
 R-help@r-project.org mailing list
 https://stat.ethz.ch/mailman/listinfo/r-help
 PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
 and provide commented, minimal, self-contained, reproducible code.

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Evaluation of variable assigned to a function name

2011-01-10 Thread Uwe Ligges



On 10.01.2011 14:39, carol white wrote:

In fact, what the function is returning is the most important. So knowing that
the parameters and the number of parameters of my.func defined by the user could
be different from one definition to another, how to use what my.func returns in
other functions? Moreover, if the function is defined by the user in an R
session, it is then defined globally. In this case, does it need to be passed as
a parameter? Note that my.func defined by me is loaded before.


It depends.

1. The output of a function can always be wrapped in a list.
2. You should always pass objects that you want to use in another 
environment unless you really know what you are doing - and reading does 
not suggest you are too sure about it.
3. In this case, if your package has a Namespace, your own function 
rather than a user generated one in the .GlobalEnv will be found.


Note that defining stuff in .GlobalEnv and relying on the fact that this 
version is found by another function would imply you really have to get 
it from the specific environment.


Best,
Uwe





Carol



- Original Message 
From: Uwe Liggeslig...@statistik.tu-dortmund.de
To: carol whitewht_...@yahoo.com
Cc: r-h...@stat.math.ethz.ch
Sent: Mon, January 10, 2011 2:11:48 PM
Subject: Re: [R] Evaluation of variable assigned to a function name

Wel, just let the user give the function in form of an argument, say
foo, and use your code so that


bar- function(x, ., foo){
 if(missing(foo)) foo- Namespace::my.func
 .
}


but perhaps I misunderstood your question.

Uwe Ligges



On 10.01.2011 13:47, carol white wrote:

Hi,
I have defined a function (my.func) which is used as parameter (f) of another
function. As I want to give the user the possibility to define his own

function

instead of my.func, how can I find out if in other functions, the parameter f
has the my.func value (if the user has defined a new function or not)?


Moreover, I think I should impose to the user to use another function name

than

my.func for this (?). Or a boolean variable is better to be used to indicate

if

my function (my.func) or user-defined function is used?

Thanks

Carol

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.







__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Evaluation of variable assigned to a function name

2011-01-10 Thread carol white
Let the following definitions:


# my definition
my.func - function (x,y,z){

return (v)
}

# user-defined definition
my.func - function (x){
...
return(v)
}

Considering that my.func can have different parameters but always return a 
vector, how to use v in bar by initializing parameters when calling my.func (x 
= 
2 or a = 3,y=4,z=5)? How can my.func could be invoked in bar and v could be 
used?

bar- function(x, ., foo){
  if(missing(foo)) foo- Namespace::my.func
  .
 }



- Original Message 
From: Uwe Ligges lig...@statistik.tu-dortmund.de
To: carol white wht_...@yahoo.com
Cc: r-h...@stat.math.ethz.ch
Sent: Mon, January 10, 2011 2:48:04 PM
Subject: Re: [R] Evaluation of variable assigned to a function name



On 10.01.2011 14:39, carol white wrote:
 In fact, what the function is returning is the most important. So knowing that
 the parameters and the number of parameters of my.func defined by the user 
could
 be different from one definition to another, how to use what my.func returns 
in
 other functions? Moreover, if the function is defined by the user in an R
 session, it is then defined globally. In this case, does it need to be passed 
as
 a parameter? Note that my.func defined by me is loaded before.

It depends.

1. The output of a function can always be wrapped in a list.
2. You should always pass objects that you want to use in another 
environment unless you really know what you are doing - and reading does 
not suggest you are too sure about it.
3. In this case, if your package has a Namespace, your own function 
rather than a user generated one in the .GlobalEnv will be found.

Note that defining stuff in .GlobalEnv and relying on the fact that this 
version is found by another function would imply you really have to get 
it from the specific environment.

Best,
Uwe




 Carol



 - Original Message 
 From: Uwe Liggeslig...@statistik.tu-dortmund.de
 To: carol whitewht_...@yahoo.com
 Cc: r-h...@stat.math.ethz.ch
 Sent: Mon, January 10, 2011 2:11:48 PM
 Subject: Re: [R] Evaluation of variable assigned to a function name

 Wel, just let the user give the function in form of an argument, say
 foo, and use your code so that


 bar- function(x, ., foo){
  if(missing(foo)) foo- Namespace::my.func
  .
 }


 but perhaps I misunderstood your question.

 Uwe Ligges



 On 10.01.2011 13:47, carol white wrote:
 Hi,
 I have defined a function (my.func) which is used as parameter (f) of another
 function. As I want to give the user the possibility to define his own
 function
 instead of my.func, how can I find out if in other functions, the parameter f
 has the my.func value (if the user has defined a new function or not)?


 Moreover, I think I should impose to the user to use another function name
 than
 my.func for this (?). Or a boolean variable is better to be used to indicate
 if
 my function (my.func) or user-defined function is used?

 Thanks

 Carol

 __
 R-help@r-project.org mailing list
 https://stat.ethz.ch/mailman/listinfo/r-help
 PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
 and provide commented, minimal, self-contained, reproducible code.





__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Evaluation of variable assigned to a function name

2011-01-10 Thread Uwe Ligges



On 10.01.2011 14:56, carol white wrote:

Let the following definitions:


# my definition
my.func- function (x,y,z){

return (v)
}

# user-defined definition
my.func- function (x){
...
return(v)
}

Considering that my.func can have different parameters but always return a
vector, how to use v in bar by initializing parameters when calling my.func (x =
2 or a = 3,y=4,z=5)? How can my.func could be invoked in bar and v could be
used?



Well, both versions will need the same number of arguments unless you 
want to pass the as well. Example:


bar - function(arglist, foo){
if(missing(foo)) foo - my.func
v - do.call(foo, arglist)
return(v*3)
}

my.func - function(x,y,z){
return(x+y+z)
}

my.func.user - function(x){
   return(x)
}


Then you can do, e.g.:

bar(arglist=list(x=1, y=2, z=3))

bar(arglist=list(x=1), foo=my.func.user)


Hope this clarifies the idea.

Best,
Uwe








bar- function(x, ., foo){

  if(missing(foo)) foo- Namespace::my.func
  .
}




- Original Message 
From: Uwe Liggeslig...@statistik.tu-dortmund.de
To: carol whitewht_...@yahoo.com
Cc: r-h...@stat.math.ethz.ch
Sent: Mon, January 10, 2011 2:48:04 PM
Subject: Re: [R] Evaluation of variable assigned to a function name



On 10.01.2011 14:39, carol white wrote:

In fact, what the function is returning is the most important. So knowing that
the parameters and the number of parameters of my.func defined by the user
could
be different from one definition to another, how to use what my.func returns

in

other functions? Moreover, if the function is defined by the user in an R
session, it is then defined globally. In this case, does it need to be passed
as
a parameter? Note that my.func defined by me is loaded before.


It depends.

1. The output of a function can always be wrapped in a list.
2. You should always pass objects that you want to use in another
environment unless you really know what you are doing - and reading does
not suggest you are too sure about it.
3. In this case, if your package has a Namespace, your own function
rather than a user generated one in the .GlobalEnv will be found.

Note that defining stuff in .GlobalEnv and relying on the fact that this
version is found by another function would imply you really have to get
it from the specific environment.

Best,
Uwe





Carol



- Original Message 
From: Uwe Liggeslig...@statistik.tu-dortmund.de
To: carol whitewht_...@yahoo.com
Cc: r-h...@stat.math.ethz.ch
Sent: Mon, January 10, 2011 2:11:48 PM
Subject: Re: [R] Evaluation of variable assigned to a function name

Wel, just let the user give the function in form of an argument, say
foo, and use your code so that


bar- function(x, ., foo){
  if(missing(foo)) foo- Namespace::my.func
  .
}


but perhaps I misunderstood your question.

Uwe Ligges



On 10.01.2011 13:47, carol white wrote:

Hi,
I have defined a function (my.func) which is used as parameter (f) of another
function. As I want to give the user the possibility to define his own

function

instead of my.func, how can I find out if in other functions, the parameter f
has the my.func value (if the user has defined a new function or not)?


Moreover, I think I should impose to the user to use another function name

than

my.func for this (?). Or a boolean variable is better to be used to indicate

if

my function (my.func) or user-defined function is used?

Thanks

Carol

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.












__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Evaluation of variable assigned to a function name

2011-01-10 Thread carol white
Note that I will call my function or user-defined function in bar function to 
have the value that my or user-defined function returns. So how can these 
function be invoked? Can it be like this?

bar - function(arglist, foo){
 if(missing(foo)) {
   foo - my.func
 v = my.func(x = 2)
 }
else{
 foo - my.func.user
 v - do.call(foo, arglist) # since arglist is not known in advance
}
 return(v*3)
}



- Original Message 
From: Uwe Ligges lig...@statistik.tu-dortmund.de
To: carol white wht_...@yahoo.com
Cc: r-h...@stat.math.ethz.ch
Sent: Mon, January 10, 2011 3:04:19 PM
Subject: Re: [R] Evaluation of variable assigned to a function name



On 10.01.2011 14:56, carol white wrote:
 Let the following definitions:


 # my definition
 my.func- function (x,y,z){
 
 return (v)
 }

 # user-defined definition
 my.func- function (x){
 ...
 return(v)
 }

 Considering that my.func can have different parameters but always return a
 vector, how to use v in bar by initializing parameters when calling my.func 
 (x 
=
 2 or a = 3,y=4,z=5)? How can my.func could be invoked in bar and v could be
 used?


Well, both versions will need the same number of arguments unless you 
want to pass the as well. Example:

bar - function(arglist, foo){
 if(missing(foo)) foo - my.func
 v - do.call(foo, arglist)
 return(v*3)
}

my.func - function(x,y,z){
 return(x+y+z)
}

my.func.user - function(x){
return(x)
}


Then you can do, e.g.:

bar(arglist=list(x=1, y=2, z=3))

bar(arglist=list(x=1), foo=my.func.user)


Hope this clarifies the idea.

Best,
Uwe







 bar- function(x, ., foo){
   if(missing(foo)) foo- Namespace::my.func
   .
 }



 - Original Message 
 From: Uwe Liggeslig...@statistik.tu-dortmund.de
 To: carol whitewht_...@yahoo.com
 Cc: r-h...@stat.math.ethz.ch
 Sent: Mon, January 10, 2011 2:48:04 PM
 Subject: Re: [R] Evaluation of variable assigned to a function name



 On 10.01.2011 14:39, carol white wrote:
 In fact, what the function is returning is the most important. So knowing 
that
 the parameters and the number of parameters of my.func defined by the user
 could
 be different from one definition to another, how to use what my.func returns
 in
 other functions? Moreover, if the function is defined by the user in an R
 session, it is then defined globally. In this case, does it need to be passed
 as
 a parameter? Note that my.func defined by me is loaded before.

 It depends.

 1. The output of a function can always be wrapped in a list.
 2. You should always pass objects that you want to use in another
 environment unless you really know what you are doing - and reading does
 not suggest you are too sure about it.
 3. In this case, if your package has a Namespace, your own function
 rather than a user generated one in the .GlobalEnv will be found.

 Note that defining stuff in .GlobalEnv and relying on the fact that this
 version is found by another function would imply you really have to get
 it from the specific environment.

 Best,
 Uwe




 Carol



 - Original Message 
 From: Uwe Liggeslig...@statistik.tu-dortmund.de
 To: carol whitewht_...@yahoo.com
 Cc: r-h...@stat.math.ethz.ch
 Sent: Mon, January 10, 2011 2:11:48 PM
 Subject: Re: [R] Evaluation of variable assigned to a function name

 Wel, just let the user give the function in form of an argument, say
 foo, and use your code so that


 bar- function(x, ., foo){
   if(missing(foo)) foo- Namespace::my.func
   .
 }


 but perhaps I misunderstood your question.

 Uwe Ligges



 On 10.01.2011 13:47, carol white wrote:
 Hi,
 I have defined a function (my.func) which is used as parameter (f) of 
another
 function. As I want to give the user the possibility to define his own
 function
 instead of my.func, how can I find out if in other functions, the parameter 
f
 has the my.func value (if the user has defined a new function or not)?


 Moreover, I think I should impose to the user to use another function name
 than
 my.func for this (?). Or a boolean variable is better to be used to indicate
 if
 my function (my.func) or user-defined function is used?

 Thanks

 Carol

 __
 R-help@r-project.org mailing list
 https://stat.ethz.ch/mailman/listinfo/r-help
 PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
 and provide commented, minimal, self-contained, reproducible code.









__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Evaluation of variable assigned to a function name

2011-01-10 Thread Uwe Ligges



On 10.01.2011 16:41, carol white wrote:

Note that I will call my function or user-defined function in bar function to
have the value that my or user-defined function returns. So how can these
function be invoked? Can it be like this?

bar- function(arglist, foo){
  if(missing(foo)) {
foo- my.func
  v = my.func(x = 2)
  }
 else{
  foo- my.func.user


The line abopve does nt make sense now, the rest seems to be fine.

Uwe



  v- do.call(foo, arglist) # since arglist is not known in advance
 }
  return(v*3)
}



- Original Message 
From: Uwe Liggeslig...@statistik.tu-dortmund.de
To: carol whitewht_...@yahoo.com
Cc: r-h...@stat.math.ethz.ch
Sent: Mon, January 10, 2011 3:04:19 PM
Subject: Re: [R] Evaluation of variable assigned to a function name



On 10.01.2011 14:56, carol white wrote:

Let the following definitions:


# my definition
my.func- function (x,y,z){

return (v)
}

# user-defined definition
my.func- function (x){
...
return(v)
}

Considering that my.func can have different parameters but always return a
vector, how to use v in bar by initializing parameters when calling my.func (x
=
2 or a = 3,y=4,z=5)? How can my.func could be invoked in bar and v could be
used?



Well, both versions will need the same number of arguments unless you
want to pass the as well. Example:

bar- function(arglist, foo){
  if(missing(foo)) foo- my.func
  v- do.call(foo, arglist)
  return(v*3)
}

my.func- function(x,y,z){
  return(x+y+z)
}

my.func.user- function(x){
 return(x)
}


Then you can do, e.g.:

bar(arglist=list(x=1, y=2, z=3))

bar(arglist=list(x=1), foo=my.func.user)


Hope this clarifies the idea.

Best,
Uwe








bar- function(x, ., foo){

   if(missing(foo)) foo- Namespace::my.func
   .
}




- Original Message 
From: Uwe Liggeslig...@statistik.tu-dortmund.de
To: carol whitewht_...@yahoo.com
Cc: r-h...@stat.math.ethz.ch
Sent: Mon, January 10, 2011 2:48:04 PM
Subject: Re: [R] Evaluation of variable assigned to a function name



On 10.01.2011 14:39, carol white wrote:

In fact, what the function is returning is the most important. So knowing

that

the parameters and the number of parameters of my.func defined by the user
could
be different from one definition to another, how to use what my.func returns

in

other functions? Moreover, if the function is defined by the user in an R
session, it is then defined globally. In this case, does it need to be passed
as
a parameter? Note that my.func defined by me is loaded before.


It depends.

1. The output of a function can always be wrapped in a list.
2. You should always pass objects that you want to use in another
environment unless you really know what you are doing - and reading does
not suggest you are too sure about it.
3. In this case, if your package has a Namespace, your own function
rather than a user generated one in the .GlobalEnv will be found.

Note that defining stuff in .GlobalEnv and relying on the fact that this
version is found by another function would imply you really have to get
it from the specific environment.

Best,
Uwe





Carol



- Original Message 
From: Uwe Liggeslig...@statistik.tu-dortmund.de
To: carol whitewht_...@yahoo.com
Cc: r-h...@stat.math.ethz.ch
Sent: Mon, January 10, 2011 2:11:48 PM
Subject: Re: [R] Evaluation of variable assigned to a function name

Wel, just let the user give the function in form of an argument, say
foo, and use your code so that


bar- function(x, ., foo){
   if(missing(foo)) foo- Namespace::my.func
   .
}


but perhaps I misunderstood your question.

Uwe Ligges



On 10.01.2011 13:47, carol white wrote:

Hi,
I have defined a function (my.func) which is used as parameter (f) of

another

function. As I want to give the user the possibility to define his own

function

instead of my.func, how can I find out if in other functions, the parameter

f

has the my.func value (if the user has defined a new function or not)?


Moreover, I think I should impose to the user to use another function name

than

my.func for this (?). Or a boolean variable is better to be used to indicate

if

my function (my.func) or user-defined function is used?

Thanks

Carol

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

















__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Evaluation of variable assigned to a function name

2011-01-10 Thread carol white
If it doesn't make sense, how to invoke in the bar function, my.func with 
specified parameters with known values and how to invoke my.func.user if the 
user defines his own function (without specifying the parameters)?



- Original Message 
From: Uwe Ligges lig...@statistik.tu-dortmund.de
To: carol white wht_...@yahoo.com
Cc: r-h...@stat.math.ethz.ch
Sent: Mon, January 10, 2011 6:10:58 PM
Subject: Re: [R] Evaluation of variable assigned to a function name



On 10.01.2011 16:41, carol white wrote:
 Note that I will call my function or user-defined function in bar function to
 have the value that my or user-defined function returns. So how can these
 function be invoked? Can it be like this?

 bar- function(arglist, foo){
   if(missing(foo)) {
 foo- my.func
   v = my.func(x = 2)
   }
  else{
   foo- my.func.user

The line abopve does nt make sense now, the rest seems to be fine.

Uwe


   v- do.call(foo, arglist) # since arglist is not known in advance
  }
   return(v*3)
 }



 - Original Message 
 From: Uwe Liggeslig...@statistik.tu-dortmund.de
 To: carol whitewht_...@yahoo.com
 Cc: r-h...@stat.math.ethz.ch
 Sent: Mon, January 10, 2011 3:04:19 PM
 Subject: Re: [R] Evaluation of variable assigned to a function name



 On 10.01.2011 14:56, carol white wrote:
 Let the following definitions:


 # my definition
 my.func- function (x,y,z){
 
 return (v)
 }

 # user-defined definition
 my.func- function (x){
 ...
 return(v)
 }

 Considering that my.func can have different parameters but always return a
 vector, how to use v in bar by initializing parameters when calling my.func 
(x
 =
 2 or a = 3,y=4,z=5)? How can my.func could be invoked in bar and v could be
 used?


 Well, both versions will need the same number of arguments unless you
 want to pass the as well. Example:

 bar- function(arglist, foo){
   if(missing(foo)) foo- my.func
   v- do.call(foo, arglist)
   return(v*3)
 }

 my.func- function(x,y,z){
   return(x+y+z)
 }

 my.func.user- function(x){
  return(x)
 }


 Then you can do, e.g.:

 bar(arglist=list(x=1, y=2, z=3))

 bar(arglist=list(x=1), foo=my.func.user)


 Hope this clarifies the idea.

 Best,
 Uwe







 bar- function(x, ., foo){
if(missing(foo)) foo- Namespace::my.func
.
 }



 - Original Message 
 From: Uwe Liggeslig...@statistik.tu-dortmund.de
 To: carol whitewht_...@yahoo.com
 Cc: r-h...@stat.math.ethz.ch
 Sent: Mon, January 10, 2011 2:48:04 PM
 Subject: Re: [R] Evaluation of variable assigned to a function name



 On 10.01.2011 14:39, carol white wrote:
 In fact, what the function is returning is the most important. So knowing
 that
 the parameters and the number of parameters of my.func defined by the user
 could
 be different from one definition to another, how to use what my.func returns
 in
 other functions? Moreover, if the function is defined by the user in an R
 session, it is then defined globally. In this case, does it need to be 
passed
 as
 a parameter? Note that my.func defined by me is loaded before.

 It depends.

 1. The output of a function can always be wrapped in a list.
 2. You should always pass objects that you want to use in another
 environment unless you really know what you are doing - and reading does
 not suggest you are too sure about it.
 3. In this case, if your package has a Namespace, your own function
 rather than a user generated one in the .GlobalEnv will be found.

 Note that defining stuff in .GlobalEnv and relying on the fact that this
 version is found by another function would imply you really have to get
 it from the specific environment.

 Best,
 Uwe




 Carol



 - Original Message 
 From: Uwe Liggeslig...@statistik.tu-dortmund.de
 To: carol whitewht_...@yahoo.com
 Cc: r-h...@stat.math.ethz.ch
 Sent: Mon, January 10, 2011 2:11:48 PM
 Subject: Re: [R] Evaluation of variable assigned to a function name

 Wel, just let the user give the function in form of an argument, say
 foo, and use your code so that


 bar- function(x, ., foo){
if(missing(foo)) foo- Namespace::my.func
.
 }


 but perhaps I misunderstood your question.

 Uwe Ligges



 On 10.01.2011 13:47, carol white wrote:
 Hi,
 I have defined a function (my.func) which is used as parameter (f) of
 another
 function. As I want to give the user the possibility to define his own
 function
 instead of my.func, how can I find out if in other functions, the parameter
 f
 has the my.func value (if the user has defined a new function or not)?


 Moreover, I think I should impose to the user to use another function name
 than
 my.func for this (?). Or a boolean variable is better to be used to 
indicate
 if
 my function (my.func) or user-defined function is used?

 Thanks

 Carol

 __
 R-help@r-project.org mailing list
 https://stat.ethz.ch/mailman/listinfo/r-help
 PLEASE do read the posting

Re: [R] Evaluation of variable assigned to a function name

2011-01-10 Thread Uwe Ligges



On 10.01.2011 18:24, carol white wrote:

If it doesn't make sense, how to invoke in the bar function, my.func with
specified parameters with known values and how to invoke my.func.user if the
user defines his own function (without specifying the parameters)?



he arguments must be specified in arglist, of course.

I guess you want something completely different, hence it might make 
sense to explain what you really intend to do and what your code is so far.


Uwe Ligges






- Original Message 
From: Uwe Liggeslig...@statistik.tu-dortmund.de
To: carol whitewht_...@yahoo.com
Cc: r-h...@stat.math.ethz.ch
Sent: Mon, January 10, 2011 6:10:58 PM
Subject: Re: [R] Evaluation of variable assigned to a function name



On 10.01.2011 16:41, carol white wrote:

Note that I will call my function or user-defined function in bar function to
have the value that my or user-defined function returns. So how can these
function be invoked? Can it be like this?

bar- function(arglist, foo){
   if(missing(foo)) {
 foo- my.func
   v = my.func(x = 2)
   }
  else{
   foo- my.func.user


The line abopve does nt make sense now, the rest seems to be fine.

Uwe



   v- do.call(foo, arglist) # since arglist is not known in advance
  }
   return(v*3)
}



- Original Message 
From: Uwe Liggeslig...@statistik.tu-dortmund.de
To: carol whitewht_...@yahoo.com
Cc: r-h...@stat.math.ethz.ch
Sent: Mon, January 10, 2011 3:04:19 PM
Subject: Re: [R] Evaluation of variable assigned to a function name



On 10.01.2011 14:56, carol white wrote:

Let the following definitions:


# my definition
my.func- function (x,y,z){

return (v)
}

# user-defined definition
my.func- function (x){
...
return(v)
}

Considering that my.func can have different parameters but always return a
vector, how to use v in bar by initializing parameters when calling my.func

(x

=
2 or a = 3,y=4,z=5)? How can my.func could be invoked in bar and v could be
used?



Well, both versions will need the same number of arguments unless you
want to pass the as well. Example:

bar- function(arglist, foo){
   if(missing(foo)) foo- my.func
   v- do.call(foo, arglist)
   return(v*3)
}

my.func- function(x,y,z){
   return(x+y+z)
}

my.func.user- function(x){
  return(x)
}


Then you can do, e.g.:

bar(arglist=list(x=1, y=2, z=3))

bar(arglist=list(x=1), foo=my.func.user)


Hope this clarifies the idea.

Best,
Uwe








bar- function(x, ., foo){

if(missing(foo)) foo- Namespace::my.func
.
}




- Original Message 
From: Uwe Liggeslig...@statistik.tu-dortmund.de
To: carol whitewht_...@yahoo.com
Cc: r-h...@stat.math.ethz.ch
Sent: Mon, January 10, 2011 2:48:04 PM
Subject: Re: [R] Evaluation of variable assigned to a function name



On 10.01.2011 14:39, carol white wrote:

In fact, what the function is returning is the most important. So knowing

that

the parameters and the number of parameters of my.func defined by the user
could
be different from one definition to another, how to use what my.func returns

in

other functions? Moreover, if the function is defined by the user in an R
session, it is then defined globally. In this case, does it need to be

passed

as
a parameter? Note that my.func defined by me is loaded before.


It depends.

1. The output of a function can always be wrapped in a list.
2. You should always pass objects that you want to use in another
environment unless you really know what you are doing - and reading does
not suggest you are too sure about it.
3. In this case, if your package has a Namespace, your own function
rather than a user generated one in the .GlobalEnv will be found.

Note that defining stuff in .GlobalEnv and relying on the fact that this
version is found by another function would imply you really have to get
it from the specific environment.

Best,
Uwe





Carol



- Original Message 
From: Uwe Liggeslig...@statistik.tu-dortmund.de
To: carol whitewht_...@yahoo.com
Cc: r-h...@stat.math.ethz.ch
Sent: Mon, January 10, 2011 2:11:48 PM
Subject: Re: [R] Evaluation of variable assigned to a function name

Wel, just let the user give the function in form of an argument, say
foo, and use your code so that


bar- function(x, ., foo){
if(missing(foo)) foo- Namespace::my.func
.
}


but perhaps I misunderstood your question.

Uwe Ligges



On 10.01.2011 13:47, carol white wrote:

Hi,
I have defined a function (my.func) which is used as parameter (f) of

another

function. As I want to give the user the possibility to define his own

function

instead of my.func, how can I find out if in other functions, the parameter

f

has the my.func value (if the user has defined a new function or not)?


Moreover, I think I should impose to the user to use another function name

than

my.func for this (?). Or a boolean variable is better to be used to

indicate

if

my function (my.func) or user-defined

Re: [R] Evaluation of variable assigned to a function name

2011-01-10 Thread carol white
I want to make an abstraction of the parameters (assuming that they are 
unknown) 
for the user-defined function. Is it possible?

In the bar function, if the user doesn't define any function, my.func will be 
invoked with known parameters (if part of the code). If the user defines his 
own 
function, his function will be invoked in the bar function instead of my.func 
(the else part of the code). The value of either function (my.func or 
my.func.user) will be returned and used in the rest of the bar function.

Is there any thing else that should be clarified?



- Original Message 
From: Uwe Ligges lig...@statistik.tu-dortmund.de
To: carol white wht_...@yahoo.com
Cc: r-h...@stat.math.ethz.ch
Sent: Mon, January 10, 2011 7:14:00 PM
Subject: Re: [R] Evaluation of variable assigned to a function name



On 10.01.2011 18:24, carol white wrote:
 If it doesn't make sense, how to invoke in the bar function, my.func with
 specified parameters with known values and how to invoke my.func.user if the
 user defines his own function (without specifying the parameters)?


he arguments must be specified in arglist, of course.

I guess you want something completely different, hence it might make 
sense to explain what you really intend to do and what your code is so far.

Uwe Ligges





 - Original Message 
 From: Uwe Liggeslig...@statistik.tu-dortmund.de
 To: carol whitewht_...@yahoo.com
 Cc: r-h...@stat.math.ethz.ch
 Sent: Mon, January 10, 2011 6:10:58 PM
 Subject: Re: [R] Evaluation of variable assigned to a function name



 On 10.01.2011 16:41, carol white wrote:
 Note that I will call my function or user-defined function in bar function to
 have the value that my or user-defined function returns. So how can these
 function be invoked? Can it be like this?

 bar- function(arglist, foo){
if(missing(foo)) {
  foo- my.func
v = my.func(x = 2)
}
   else{
foo- my.func.user

 The line abopve does nt make sense now, the rest seems to be fine.

 Uwe


v- do.call(foo, arglist) # since arglist is not known in advance
   }
return(v*3)
 }



 - Original Message 
 From: Uwe Liggeslig...@statistik.tu-dortmund.de
 To: carol whitewht_...@yahoo.com
 Cc: r-h...@stat.math.ethz.ch
 Sent: Mon, January 10, 2011 3:04:19 PM
 Subject: Re: [R] Evaluation of variable assigned to a function name



 On 10.01.2011 14:56, carol white wrote:
 Let the following definitions:


 # my definition
 my.func- function (x,y,z){
 
 return (v)
 }

 # user-defined definition
 my.func- function (x){
 ...
 return(v)
 }

 Considering that my.func can have different parameters but always return a
 vector, how to use v in bar by initializing parameters when calling my.func
 (x
 =
 2 or a = 3,y=4,z=5)? How can my.func could be invoked in bar and v could be
 used?


 Well, both versions will need the same number of arguments unless you
 want to pass the as well. Example:

 bar- function(arglist, foo){
if(missing(foo)) foo- my.func
v- do.call(foo, arglist)
return(v*3)
 }

 my.func- function(x,y,z){
return(x+y+z)
 }

 my.func.user- function(x){
   return(x)
 }


 Then you can do, e.g.:

 bar(arglist=list(x=1, y=2, z=3))

 bar(arglist=list(x=1), foo=my.func.user)


 Hope this clarifies the idea.

 Best,
 Uwe







 bar- function(x, ., foo){
 if(missing(foo)) foo- Namespace::my.func
 .
 }



 - Original Message 
 From: Uwe Liggeslig...@statistik.tu-dortmund.de
 To: carol whitewht_...@yahoo.com
 Cc: r-h...@stat.math.ethz.ch
 Sent: Mon, January 10, 2011 2:48:04 PM
 Subject: Re: [R] Evaluation of variable assigned to a function name



 On 10.01.2011 14:39, carol white wrote:
 In fact, what the function is returning is the most important. So knowing
 that
 the parameters and the number of parameters of my.func defined by the user
 could
 be different from one definition to another, how to use what my.func 
returns
 in
 other functions? Moreover, if the function is defined by the user in an R
 session, it is then defined globally. In this case, does it need to be
 passed
 as
 a parameter? Note that my.func defined by me is loaded before.

 It depends.

 1. The output of a function can always be wrapped in a list.
 2. You should always pass objects that you want to use in another
 environment unless you really know what you are doing - and reading does
 not suggest you are too sure about it.
 3. In this case, if your package has a Namespace, your own function
 rather than a user generated one in the .GlobalEnv will be found.

 Note that defining stuff in .GlobalEnv and relying on the fact that this
 version is found by another function would imply you really have to get
 it from the specific environment.

 Best,
 Uwe




 Carol



 - Original Message 
 From: Uwe Liggeslig...@statistik.tu-dortmund.de
 To: carol whitewht_...@yahoo.com
 Cc: r-h...@stat.math.ethz.ch
 Sent: Mon, January 10, 2011 2