[R] Using a sting in variable names

Duncan Murdoch murdoch.duncan at gmail.com
Tue May 17 00:29:53 CEST 2011


On 16/05/2011 4:18 PM, olafgy wrote:
> Hi there,
>
> I am trying to import 100 files with the names of "vpn 1 .dat" to "vpn 100
> .dat"
> into a respective table calld vpn1 to vpn100.
>
> I therfore have created a variable X<-1:100
>
> I not want to use X as a subtitute for the number in my filename, so that I
> have to write only one function and it does the operation with all files.
>
> I have tried every combination i could imagine to include the string X into
> the file name:
>
> vpn'X'  , vpn"X"  , vpn[X] ,  and so on, but R never did what I wanted it
> too.
>
> vpn"X"<-read.table("vpn "X" .dat")
>
> So is there a way to do this in R??? or should I use an intirely new
> aproach?

Yes there is a way, and yes you should use a different approach.

R is not a macro language.  You can't just put X somewhere and expect it 
to be expanded into its contents.  You need to call functions that make 
use of it and produce the results you want.

One way is like this:

filenames <- sprintf("vpn %d .dat", X)
varnames <- sprintf("vpn%d", X)

for (i in 1:100) {
   var <- read.table(filenames[i])
   assign(varnames[i], var)
}

There are ways to compress all of this into a single line, but they are 
(in my opinion) a lot less clear.

Duncan Murdoch



More information about the R-help mailing list