Re: [R] Extracting variables with a given prefix in the parent environment

2008-10-20 Thread Duncan Murdoch

On 20/10/2008 2:06 AM, erwann rogard wrote:

hi,

get.vars.name.prefix-function(prefix){
 result-list()
 len-nchar(prefix)
 var.names-ls(name=1,pattern=prefix) #name=1 probably wrong option
 print(var.names)
 for(i in 1:length(var.names)){
  name-var.names[i]
  field-substr(name,len+1,nchar(name))
  result[[field]]-get(name)
 }
 result
}

for example
x.1-1
x.2-2
get.vars.name.prefix(x.) should return 1,2

this does not work if i call if from within another function:

g-function(){
  x.1-1
  x.2-2
  get.vars.name.prefix(x.) # should return 1,2, nothing else
}

i would like the environment specified within ls(...) to be that of the body
of the function that calls get.vars.name.prefix. apparently name=1 is
probably not the right option.


Use ls(name=parent.frame(), pattern=...)

And be careful about the pattern:  it's a regular expression, so you 
would need to start with a caret ^ to guarantee that it occurs at the 
start of the name.


Duncan Murdoch

__
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] Extracting variables with a given prefix in the parent environment

2008-10-20 Thread Henrique Dallazuanna
Try this:

Using 'envir' argument, in ls and get function:

get.vars.name.prefix-function(prefix, envir = parent.frame()){
   result-list()
   len-nchar(prefix)
   var.names-ls(envir = envir,pattern=prefix)
   print(var.names)
   for(i in 1:length(var.names)){
  name-var.names[i]
  field-substr(name,len+1,nchar(name))
  result[[field]]-get(name, envir = envir)
  }
 result
}

On Mon, Oct 20, 2008 at 4:06 AM, erwann rogard [EMAIL PROTECTED]wrote:

 hi,

 get.vars.name.prefix-function(prefix){
  result-list()
  len-nchar(prefix)
  var.names-ls(name=1,pattern=prefix) #name=1 probably wrong option
  print(var.names)
  for(i in 1:length(var.names)){
  name-var.names[i]
  field-substr(name,len+1,nchar(name))
  result[[field]]-get(name)
  }
  result
 }

 for example
 x.1-1
 x.2-2
 get.vars.name.prefix(x.) should return 1,2

 this does not work if i call if from within another function:

 g-function(){
  x.1-1
  x.2-2
  get.vars.name.prefix(x.) # should return 1,2, nothing else
 }

 i would like the environment specified within ls(...) to be that of the
 body
 of the function that calls get.vars.name.prefix. apparently name=1 is
 probably not the right option.

 thanks.

[[alternative HTML version deleted]]

 __
 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.




-- 
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40 S 49° 16' 22 O

[[alternative HTML version deleted]]

__
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] Extracting variables with a given prefix in the parent environment

2008-10-20 Thread erwann rogard
Thank you all for your answers.

On Mon, Oct 20, 2008 at 6:32 AM, Henrique Dallazuanna [EMAIL PROTECTED]wrote:

 Try this:

 Using 'envir' argument, in ls and get function:

 get.vars.name.prefix-function(prefix, envir = parent.frame()){
result-list()
len-nchar(prefix)
var.names-ls(envir = envir,pattern=prefix)
print(var.names)
for(i in 1:length(var.names)){
   name-var.names[i]
   field-substr(name,len+1,nchar(name))
   result[[field]]-get(name, envir = envir)
   }
  result
 }

 On Mon, Oct 20, 2008 at 4:06 AM, erwann rogard [EMAIL PROTECTED]wrote:

 hi,

 get.vars.name.prefix-function(prefix){
  result-list()
  len-nchar(prefix)
  var.names-ls(name=1,pattern=prefix) #name=1 probably wrong option
  print(var.names)
  for(i in 1:length(var.names)){
  name-var.names[i]
  field-substr(name,len+1,nchar(name))
  result[[field]]-get(name)
  }
  result
 }

 for example
 x.1-1
 x.2-2
 get.vars.name.prefix(x.) should return 1,2

 this does not work if i call if from within another function:

 g-function(){
  x.1-1
  x.2-2
  get.vars.name.prefix(x.) # should return 1,2, nothing else
 }

 i would like the environment specified within ls(...) to be that of the
 body
 of the function that calls get.vars.name.prefix. apparently name=1 is
 probably not the right option.

 thanks.

[[alternative HTML version deleted]]

 __
 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.




 --
 Henrique Dallazuanna
 Curitiba-Paraná-Brasil
 25° 25' 40 S 49° 16' 22 O


[[alternative HTML version deleted]]

__
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.