[R] character substitution within a variable name

Rolf Turner rolf.turner at xtra.co.nz
Thu Nov 24 02:45:52 CET 2011


On 24/11/11 09:23, matric wrote:
> Thanks Duncan,
> I knew it. But if I use the complete variable name, I'll have far too
> many arguments for my function....

Did you understand Duncan's post?  He told you that

     df[,var]

would work, whereas df$var doesn't.  So he gave you a solution
to the problem whereby you ***don't*** have to use the ``complete
variable name''.

The ``var'' in the foregoing is the object (character string) that you
constructed using paste().  I think you are misinterpreting Duncan
to be suggesting that you use df[,"x_narrow"], df[,"x_wide"] etc.
explicitly.

     cheers,

         Rolf Turner

P. S.  But anyway, as Duncan said in a follow-up post, a new design is 
probably
called for.

         R. T.
> On 23 November 2011 20:59, Duncan Murdoch-2 [via R]
> <ml-node+s789695n4101308h84 at n4.nabble.com>  wrote:
>> On 23/11/2011 2:29 PM, matric wrote:
>>> Hi,
>>> I'd like to create a function that accepts as arguments a string that is
>>> to
>>> be substituted within a variable name. For instance, suppose I have a data
>>> frame df:
>>>
>>> df<-data.frame(x_narrow=c(rnorm(100,0,1)),x_wide=c(rnorm(100,0,10)))
>>>
>>> What I have in mind is something like:
>>>
>>> f<- function(string){
>>> var = paste("x_",string,sep = "")
>>> df$var
>>> }
>>>
>>> which does not work. Any suggestion for modifications? Thanks in advance,
>> For indexing a dataframe, use the name as the column index:
>>
>> df[, var]
>>
>> will work.
>>
>> Duncan Murdoch



More information about the R-help mailing list