Hello,
I would like to make a function which extracts a subset, from a dataset,
with only the columns that I want (specifying their names).
For example, having this matrix:
> mydata<-matrix(c(22,1,3,2001,24,5,7,2002,26,7,8,2002,28,5,7,2003),
byrow=TRUE, ncol=4, dimnames=list(c(1,2,3,4),
c("age","day","month","year")))
> mydata
age day month year
1 22 1 3 2001
2 24 5 7 2002
3 26 7 8 2002
4 28 5 7 2003
I would like to create a function like:
x<-function(names) {subset(mydata, select=names) }
So I can choose every time which columns select, i.e. when I call:
x("age,day")
it would returns:
age day
1 22 1
2 24 5
3 26 7
4 28 5
Obviously it is not working, and I don't know how to do to fix it. Do
you have any suggestion?
Thank you very much
subset select="variable with a list of names"
3 messages · Francisco, Nordlund, Dan (DSHS/RDA), Peter Dalgaard
-----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r- project.org] On Behalf Of Francisco Sent: Thursday, February 09, 2012 4:52 AM To: r-help at r-project.org Subject: [R] subset select="variable with a list of names" Hello, I would like to make a function which extracts a subset, from a dataset, with only the columns that I want (specifying their names). For example, having this matrix:
> mydata<-matrix(c(22,1,3,2001,24,5,7,2002,26,7,8,2002,28,5,7,2003),
byrow=TRUE, ncol=4, dimnames=list(c(1,2,3,4),
c("age","day","month","year")))
> mydata
age day month year
1 22 1 3 2001
2 24 5 7 2002
3 26 7 8 2002
4 28 5 7 2003
I would like to create a function like:
x<-function(names) {subset(mydata, select=names) }
So I can choose every time which columns select, i.e. when I call:
x("age,day")
it would returns:
age day
1 22 1
2 24 5
3 26 7
4 28 5
Obviously it is not working, and I don't know how to do to fix it. Do
you have any suggestion?
Thank you very much
Given your function definition, the function call needs to be
x(c("age","day"))
Whether it is good form to write a function like this, I will leave to others to comment.
Hope this is helpful,
Dan
Daniel J. Nordlund
Washington State Department of Social and Health Services
Planning, Performance, and Accountability
Research and Data Analysis Division
Olympia, WA 98504-5204
On Feb 9, 2012, at 18:17 , Nordlund, Dan (DSHS/RDA) wrote:
-----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r- project.org] On Behalf Of Francisco Sent: Thursday, February 09, 2012 4:52 AM To: r-help at r-project.org Subject: [R] subset select="variable with a list of names" Hello, I would like to make a function which extracts a subset, from a dataset, with only the columns that I want (specifying their names). For example, having this matrix:
mydata<-matrix(c(22,1,3,2001,24,5,7,2002,26,7,8,2002,28,5,7,2003),
byrow=TRUE, ncol=4, dimnames=list(c(1,2,3,4),
c("age","day","month","year")))
mydata
age day month year
1 22 1 3 2001
2 24 5 7 2002
3 26 7 8 2002
4 28 5 7 2003
I would like to create a function like:
x<-function(names) {subset(mydata, select=names) }
So I can choose every time which columns select, i.e. when I call:
x("age,day")
it would returns:
age day
1 22 1
2 24 5
3 26 7
4 28 5
Obviously it is not working, and I don't know how to do to fix it. Do
you have any suggestion?
Thank you very much
Given your function definition, the function call needs to be
x(c("age","day"))
Whether it is good form to write a function like this, I will leave to others to comment.
Well, I'll bite. Using subset() inside functions is usually asking for trouble.
It's much easier just to use the basic indexing features:
mydata[ , c("age","day"), drop=FALSE]
You can encapsulate that in a function, if you like (not that it really buys you much)
x <- function(names) mydata[, names, drop=FALSE]
(you may or may not want the drop=FALSE, see help(Extract))
Peter Dalgaard, Professor, Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com