[R] access a column of a dataframe without qualifying the name of the column

Bill.Venables at csiro.au Bill.Venables at csiro.au
Thu Dec 30 07:12:28 CET 2010


Here is an alternaive approach that is closer to that used by lm and friends.

> df <- data.frame(x=1:10,y=11:20)
> test <- function(col, dat) eval(substitute(col), envir = dat)
> test(x, df)
 [1]  1  2  3  4  5  6  7  8  9 10
> test(y, df)
 [1] 11 12 13 14 15 16 17 18 19 20
> 

There is a slight added bonus this way

> test(x+y+1, df)
 [1] 13 15 17 19 21 23 25 27 29 31
> 

(Well, I did say 'slight'.)

Bill Venables.


________________________________________
From: r-help-bounces at r-project.org [r-help-bounces at r-project.org] On Behalf Of David Winsemius [dwinsemius at comcast.net]
Sent: 30 December 2010 10:44
To: John Sorkin
Cc: r-help at r-project.org
Subject: Re: [R] access a column of a dataframe without qualifying the name     of the column

On Dec 29, 2010, at 7:11 PM, John Sorkin wrote:

> I am trying to write a function that will access a column of a data
> frame without having to qualify the name of the data frame column as
> long as the name of the dataframe is passed to the function. As can
> be seen from the code below, my function is not working:

Not sure what the verb "qualify" means in programming. Quoting?

>
> df <- data.frame(x=1:10,y=11:20)
> df
>
> test <- function(column,data) {
>  print(data$column)
> }
>
> test(x,df)
>
> I am trying to model my function after the way that lm works where
> one needs not qualify column names, i.e.


 > df <- data.frame(x=1:10,y=11:20)
 > test <- function(column,dat) { print(colname <-
deparse(substitute(column)))
+  dat[[colname]]
+ }
 >
 > test(x,df)
[1] "x"
  [1]  1  2  3  4  5  6  7  8  9 10
 >

--
David.


>
>
> fit1<- lm(y~x,data=df)
>
>
> John David Sorkin M.D., Ph.D.
> Chief, Biostatistics and Informatics
> University of Maryland School of Medicine Division of Gerontology
> Baltimore VA Medical Center
> 10 North Greene Street
> GRECC (BT/18/GR)
> Baltimore, MD 21201-1524
> (Phone) 410-605-7119
> (Fax) 410-605-7913 (Please call phone number above prior to faxing)
>
> Confidentiality Statement:
> This email message, including any attachments, is for th...{{dropped:
> 6}}
>
> ______________________________________________
> R-help at 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.

David Winsemius, MD
West Hartford, CT

______________________________________________
R-help at 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.



More information about the R-help mailing list