Re: [R] string substitution for argument in function

2012-03-26 Thread Prof. Dr. Pedro Martinez Arbizu

Me again,
what I really dont understand is the behaivour of R here.
notice, elem is not written in brackets, why it is interpreted as 
string and not as a variable?
I would expect an error elem not found because it is not defined as 
variable, but in contrary it is accepted as column name, see below:


 a = c('one','two','three')
 data =c()
 data=cbind(elem = 2,data)
 data
 elem
[1,]2

 data=cbind('elem' = 2,data)
 data
 elem elem
[1,]22

 elem
Fehler: Objekt 'elem' nicht gefunden

pedro








On 26.03.2012 17:22, Prof. Dr. Pedro Martinez Arbizu wrote:

HI, thanks Weidong, Henrique,
this works for the example (may be a bad example, but it should be as 
simple as possible),


This is however only a workaround to name the columns of a dataframe, 
but is not addressing the problem itself, that is, how can I 
substitute a string (used as argument in a function) within a function 
call in a for-loop??


I dont know if I have explain myself,

something like this works well:

 a = c('one','two','three')


 data= c()
 for(elem in a){data=cbind('title' = elem,data)}
 data

 title   title title
[1,] three two one


So I can use 'title' = elem within the function and it will substitute 
elem by a name, every loop by a different name of a list.


...but I cannot use the contrary:   elem = 'something' within the 
function call.


My real life problem is using randomForest() I want to balance the 
class frequency with the argument sampsize = c( 'absent' = 23, elem = 23)

where elem is everytime a different name taken from a list in a for-loop.

Regards Pedro



On 26.03.2012 02:17, Weidong Gu wrote:

Hi,

This may help

  a = c('one','two','three')
data.frame(eval(substitute(rbind(var,2),list(var=a

?substitute
?eval

Weidong Gu


On Sun, Mar 25, 2012 at 5:22 PM, Pedro Martinez
pedro.marti...@senckenberg.de  wrote:

hello,
I want to iterate through a list of names and use each element as an
argument in a function. For instance:


a = c('one','two','three')
data= c()
for(elem in a){data=cbind(elem = 2,data)}
data

 elem elem elem
[1,]222

instead I want 'elem' to be substituted by the string in the list. 
Doing

it by hand would be:

data = cbind('one'=2,data)
data = cbind('two'=2,data)
data = cbind('three'=2,data)
data

 'one' 'two' 'three'
[1,]222

I guess that the clue would be in sub(),gsub(), paste() or similar 
but I

didnt get it to work.

I am comming from python were we woudl do something like:

a = ['one','two','three']
data = {}
for elem in a:
   data[elem] = 2
data

{'three': 2, 'two': 2, 'one': 2}

Thanks, Pedro


-
Prof. Dr. P. Martinez Arbizu
DZMB-Forschungsinstitut Senckenberg

Suedstrand 44
D-26382 Wilhelmshaven
Germany

Tel: +49 (0)4421 9475-100
Fax: +49 (0)4421 9475-111

Email: pmarti...@senckenberg.de

Senckenberg Gesellschaft für Naturforschung
Rechtsfähiger Verein gemäß § 22 BGB
Senckenberganlage 25
60325 Frankfurt
Direktorium: Prof. Dr. Dr. h.c. Volker Mosbrugger, Prof. Dr. Michael
Türkay, Dr. Johannes Heilmann, Prof. Dr. Pedro Martinez Arbizu, Prof.
Dr. Georg Zizka, Prof. Dr. Uwe Fritz
Vorsitzender des Präsidiums: Dietmar Schmid
Aufsichtsbehörde: Magistrat der Stadt Frankfurt am Main (Ordnungsamt)

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






--
-
Prof. Dr. Pedro Martinez Arbizu

Deutsches Zentrum für Marine Biodiversitätsforschung
Senckenberg am Meer
Südstrand 44
26382 Wilhelmshaven
Tel +49 (0)4421 9475 100
Fax +49 (0)4421 9475 111
Email: pmarti...@senckenberg.de
http://www.senckenberg.de/root/index.php?page_id=2141

und

C.v.O. Universität Oldenburg
FK V, Institut für Biologie u. Umweltwissenschaften
Ag Marine Biodiversität

**
Senckenberg Gesellschaft für Naturforschung
Rechtsfähiger Verein gemäß § 22 BGB
Senckenberganlage 25
60325 Frankfurt
Direktorium: Prof. Dr. Dr. h.c. Volker Mosbrugger, Prof. Dr. Michael Türkay, 
Dr. Johannes Heilmann, Prof. Dr. Pedro Martinez Arbizu, Prof. Dr. Georg Zizka, 
Prof. Dr. Uwe Fritz
Vorsitzender des Präsidiums: Dietmar Schmid
Aufsichtsbehörde: Magistrat der Stadt Frankfurt am Main (Ordnungsamt)

__
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] string substitution for argument in function

2012-03-26 Thread Prof. Dr. Pedro Martinez Arbizu

HI, thanks Weidong, Henrique,
this works for the example (may be a bad example, but it should be as 
simple as possible),


This is however only a workaround to name the columns of a dataframe, 
but is not addressing the problem itself, that is, how can I substitute 
a string (used as argument in a function) within a function call in a 
for-loop??


I dont know if I have explain myself,

something like this works well:

 a = c('one','two','three')


 data= c()
 for(elem in a){data=cbind('title' = elem,data)}
 data

 title   title title
[1,] three two one


So I can use 'title' = elem within the function and it will substitute 
elem by a name, every loop by a different name of a list.


...but I cannot use the contrary:   elem = 'something' within the 
function call.


My real life problem is using randomForest() I want to balance the class 
frequency with the argument sampsize = c( 'absent' = 23, elem = 23)

where elem is everytime a different name taken from a list in a for-loop.

Regards Pedro



On 26.03.2012 02:17, Weidong Gu wrote:

Hi,

This may help

  a = c('one','two','three')
data.frame(eval(substitute(rbind(var,2),list(var=a

?substitute
?eval

Weidong Gu


On Sun, Mar 25, 2012 at 5:22 PM, Pedro Martinez
pedro.marti...@senckenberg.de  wrote:

hello,
I want to iterate through a list of names and use each element as an
argument in a function. For instance:


a = c('one','two','three')
data= c()
for(elem in a){data=cbind(elem = 2,data)}
data

 elem elem elem
[1,]222

instead I want 'elem' to be substituted by the string in the list. Doing
it by hand would be:

data = cbind('one'=2,data)
data = cbind('two'=2,data)
data = cbind('three'=2,data)
data

 'one' 'two' 'three'
[1,]222

I guess that the clue would be in sub(),gsub(), paste() or similar but I
didnt get it to work.

I am comming from python were we woudl do something like:

a = ['one','two','three']
data = {}
for elem in a:
   data[elem] = 2
data

{'three': 2, 'two': 2, 'one': 2}

Thanks, Pedro


-
Prof. Dr. P. Martinez Arbizu
DZMB-Forschungsinstitut Senckenberg

Suedstrand 44
D-26382 Wilhelmshaven
Germany

Tel: +49 (0)4421 9475-100
Fax: +49 (0)4421 9475-111

Email: pmarti...@senckenberg.de

Senckenberg Gesellschaft für Naturforschung
Rechtsfähiger Verein gemäß § 22 BGB
Senckenberganlage 25
60325 Frankfurt
Direktorium: Prof. Dr. Dr. h.c. Volker Mosbrugger, Prof. Dr. Michael
Türkay, Dr. Johannes Heilmann, Prof. Dr. Pedro Martinez Arbizu, Prof.
Dr. Georg Zizka, Prof. Dr. Uwe Fritz
Vorsitzender des Präsidiums: Dietmar Schmid
Aufsichtsbehörde: Magistrat der Stadt Frankfurt am Main (Ordnungsamt)

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



--
-
Prof. Dr. Pedro Martinez Arbizu

Deutsches Zentrum für Marine Biodiversitätsforschung
Senckenberg am Meer
Südstrand 44
26382 Wilhelmshaven
Tel +49 (0)4421 9475 100
Fax +49 (0)4421 9475 111
Email: pmarti...@senckenberg.de
http://www.senckenberg.de/root/index.php?page_id=2141

und

C.v.O. Universität Oldenburg
FK V, Institut für Biologie u. Umweltwissenschaften
Ag Marine Biodiversität

**
Senckenberg Gesellschaft für Naturforschung
Rechtsfähiger Verein gemäß § 22 BGB
Senckenberganlage 25
60325 Frankfurt
Direktorium: Prof. Dr. Dr. h.c. Volker Mosbrugger, Prof. Dr. Michael Türkay, 
Dr. Johannes Heilmann, Prof. Dr. Pedro Martinez Arbizu, Prof. Dr. Georg Zizka, 
Prof. Dr. Uwe Fritz
Vorsitzender des Präsidiums: Dietmar Schmid
Aufsichtsbehörde: Magistrat der Stadt Frankfurt am Main (Ordnungsamt)

__
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] string substitution for argument in function

2012-03-25 Thread Pedro Martinez
hello,
I want to iterate through a list of names and use each element as an
argument in a function. For instance:

 a = c('one','two','three')
 data= c()
 for(elem in a){data=cbind(elem = 2,data)}
 data
 elem elem elem
[1,]222

instead I want 'elem' to be substituted by the string in the list. Doing
it by hand would be:
 data = cbind('one'=2,data)
 data = cbind('two'=2,data)
 data = cbind('three'=2,data)
 data
 'one' 'two' 'three'
[1,]222

I guess that the clue would be in sub(),gsub(), paste() or similar but I
didnt get it to work.

I am comming from python were we woudl do something like:
 a = ['one','two','three']
 data = {}

 for elem in a:
   data[elem] = 2
 
 data
{'three': 2, 'two': 2, 'one': 2}

Thanks, Pedro


-
Prof. Dr. P. Martinez Arbizu
DZMB-Forschungsinstitut Senckenberg

Suedstrand 44
D-26382 Wilhelmshaven
Germany

Tel: +49 (0)4421 9475-100
Fax: +49 (0)4421 9475-111

Email: pmarti...@senckenberg.de

Senckenberg Gesellschaft für Naturforschung
Rechtsfähiger Verein gemäß § 22 BGB
Senckenberganlage 25
60325 Frankfurt
Direktorium: Prof. Dr. Dr. h.c. Volker Mosbrugger, Prof. Dr. Michael
Türkay, Dr. Johannes Heilmann, Prof. Dr. Pedro Martinez Arbizu, Prof.
Dr. Georg Zizka, Prof. Dr. Uwe Fritz
Vorsitzender des Präsidiums: Dietmar Schmid
Aufsichtsbehörde: Magistrat der Stadt Frankfurt am Main (Ordnungsamt)

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