Henrique Dallazuanna wrote:
> Try: sapply(paste("Data$x", 1:3, sep=""),
> function(x)eval(parse(text=x)))
> 
> On 07/01/2008, Gregory Gentlemen <[EMAIL PROTECTED]> wrote:
>> Dear R users,
>> 
>> I'd like to evaluate a vector of characters. For example, say I
>> have a data frame called Data including the field names x1, x2, x3,
>> and I'd like to a list out of paste("Data$x", 1:3, sep=""). How can
>> I get list to evaluate paste("Data$x", 1:3, sep="") as an R object
>> rather than a string?
>> 
>> Thanks in advance for you assistance. Gregory

 > fortune(106)

If the answer is parse() you should usually rethink the question.
    -- Thomas Lumley
       R-help (February 2005)

:-)

Try this:

 > Data <- data.frame(x1 = 1:3, x2 = letters[1:3], x3 = 4:6, x4 = 8:10)

 > Data
   x1 x2 x3 x4
1  1  a  4  8
2  2  b  5  9
3  3  c  6 10


Since the only part that is varying is the column names:

Data[, paste("x", 1:3, sep="")]
   x1 x2 x3
1  1  a  4
2  2  b  5
3  3  c  6

or

 > subset(Data, select = paste("x", 1:3, sep=""))
   x1 x2 x3
1  1  a  4
2  2  b  5
3  3  c  6


See ?subset.  Alternatively, see ?get for other ways of returning R 
objects using character vectors.

For example, a bit more convoluted, but you could also do:

MyDF <- "Data"
Cols <- paste("x", 1:3, sep="")

 > get(MyDF)[, Cols]
   x1 x2 x3
1  1  a  4
2  2  b  5
3  3  c  6

This gives you more flexibility in having both the name of the data 
frame and the desired subset of columns within the data frame as 
character vectors.

HTH,

Marc Schwartz

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

Reply via email to