[BioC] How can I create a variable with name indicated by argument during function run?

Kasper Daniel Hansen kasperdanielhansen at gmail.com
Wed Aug 20 20:13:36 CEST 2014


An off-list email ... Allen is not really set on the global environment
stuff, but just want to control the name of the variable the return value
of the function is assigned to.

Let us say we have the following

name_variable = "my_name"
my_function = function() {
  3
}

Then you do
  assign(name_variable, my_function())

This will create a variable called
  my_name
which will have a value of
  3.

In other words, when you want to control the name of the variable which
holds the result of the function, you do it all outside the function, not
as you were suggesting, which were roughly to have something like
my_function = function(name_variable) {
  3
  MORE CODE
}
and then have my_function("my_name") create a variable with name "my_name"
and value 3.

Best,
Kasper





On Wed, Aug 20, 2014 at 9:33 AM, Kasper Daniel Hansen <
kasperdanielhansen at gmail.com> wrote:

> Michael's answer is of course correct, but if the intention is not to
> create it in the global environment, you typically use assign, like
>   assign("tmp", 1:3)
> will create a variable called tmp with the value 1:3.  assign supports an
> envir argument, so you can set it to create it in the Global environment.
>
> Like Michael, I am wondering why you want to do this, and I hope this is
> not intended for code that ever has to be used by other people besides
> yourself.
>
> Best,
> Kasper
>
>
> On Wed, Aug 20, 2014 at 9:16 AM, Michael Lawrence <michafla at gene.com>
> wrote:
>
>> .GlobalEnv[[path_name]] <- de_gene_list
>>
>> I hope you have a good reason for this side effect.
>>
>> Also, general R questions like these are better suited for e.g.
>> stackoverflow or R-help.
>>
>>
>>
>> On Wed, Aug 20, 2014 at 6:08 AM, my1stbox <my1stbox at 163.com> wrote:
>>
>> > Hi All,
>> > How can I create a variable with a name identical to the character value
>> > of an argument that I passed to the function ? The following lines
>> doesn’t
>> > work. Do I have to text an expression with a combination of paste0(),
>> > parse() first, and eventually evaluate it with eval()?
>> >
>> > f <-
>> >
>> function(Argument.to.carry.the.value.that.I.want.to.use.as.name.of.variable.to.be.created){
>> >
>> >  as.name
>> >
>> (Argument.to.carry.the.value.that.I.want.to.use.as.name.of.variable.to.be.created)=my.gene.list
>> >
>> > }
>> > f(the.name)
>> >
>> > Bests,
>> > Allen Chiu
>> >
>> > PS: What I really want to do is to create a global variable during the
>> > function run, like:
>> >
>> > de.limma=function(path_name){
>> >           ……………
>> >   .GlobalEnv$”as indicated by the path_name argument”=de_gene_list
>> > }
>> >
>> >
>> >
>> > 2014-08-20
>> >         [[alternative HTML version deleted]]
>> >
>> > _______________________________________________
>> > Bioconductor mailing list
>> > Bioconductor at r-project.org
>> > https://stat.ethz.ch/mailman/listinfo/bioconductor
>> > Search the archives:
>> > http://news.gmane.org/gmane.science.biology.informatics.conductor
>>
>>         [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> Bioconductor mailing list
>> Bioconductor at r-project.org
>> https://stat.ethz.ch/mailman/listinfo/bioconductor
>> Search the archives:
>> http://news.gmane.org/gmane.science.biology.informatics.conductor
>>
>
>

	[[alternative HTML version deleted]]



More information about the Bioconductor mailing list