MadmanLee
MadmanLee

Reputation: 558

Extract columns with same names from multiple data frames [R]

I am dealing with about 10 data frames that have the same column names, but different number of rows. I would like to create a list of all columns with the same names.

So, say i have 2 data frames with the same names.

a<-seq(0,20,1)
b<-seq(20,40,1)
c<-seq(10,30,1)

df.abc.1<-data.frame(a,b,c)

a<-seq(20,50,1)
b<-seq(10,40,1)
c<-seq(30,60,1)

df.abc.2<-data.frame(a,b,c)

I know i can create a list from this data such as,

list(df.abc.1$a, df.abc.2$a)

but i don't want to type out my long data frame names and column names.

I was hoping to do something like this,

list(c(df.abc.1, df.abc.2)$a)

But, it returns a list of df.abc.1$a

Perhaps there could be a way to use the grep function across multiple data.frames? Perhaps a loop could accomplish this task?

Upvotes: 4

Views: 5036

Answers (1)

David Arenburg
David Arenburg

Reputation: 92282

Not sure if it's any better, but maybe

lapply(list(df.abc.1, df.abc.2), function(x) x$a)

For more than one column

lapply(list(df.abc.1, df.abc.2), function(x) x[, c("a","b")])

Upvotes: 5

Related Questions