Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I reorder columns for all data frames in a list in R?

I already have a list of data frames (mylist) and need to switch the first and second column for all the data frames in the list.

Test Data Frame in List

[reads] [phylum]
1         phylum1
2         phylum2
3         phylum3

Into....

[phylum] [reads]
phylum1      1
phylum2      2
phylum3      3

I know I need to use lapply, but not sure what to input for the FUN=

mylist <- lapply(mylist, FUN = mylist[ ,c("phylum", "reads")])

errors saying incorrect number of dimensions

Sorry if this is a simple question and thanks in advance for your help!

-Brand new R user

like image 772
Charyoshi Avatar asked Nov 04 '25 20:11

Charyoshi


1 Answers

The FUN asks for a function that it can apply to every element in the list. You are passing mylist[ ,c("phylum", "reads")]) which is not a function.

# sample data
df1 <- data.frame(reads = sample(10,4), phylum = sample(10,4))
df2 <- data.frame(reads = sample(10,4), phylum = sample(10,4))
df3 <- data.frame(reads = sample(10,4), phylum = sample(10,4))
df4 <- data.frame(reads = sample(10,4), phylum = sample(10,4))

ldf <- list(df1,df2,df3,df4)
ldf_re <- lapply(ldf, FUN = function(X){X[c('phylum', 'reads')]})

In the last line, the lapply will iterate through all the dataframes, they will be passed as the X argument for the function defined in the FUN argument and the columns will be dataframes will be stored in the list ldf_re with their columns rearranged.

like image 99
Clock Slave Avatar answered Nov 07 '25 09:11

Clock Slave



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!