如何为R中列表中的所有数据帧重新排序列?

时间:2017-08-10 07:57:37

标签: r dataframe lapply

我已经有了一个数据框列表(mylist),需要切换列表中所有数据框的第一列和第二列。

列表中的测试数据框

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

向...

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

我知道我需要使用lapply,但不确定要为FUN =

输入什么

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

错误说明维数不正确

很抱歉,如果这是一个简单的问题,请提前感谢您的帮助!

-Brand new R user

1 个答案:

答案 0 :(得分:1)

FUN要求提供一个可以应用于列表中每个元素的函数。您正在传递mylist[ ,c("phylum", "reads")])这不是函数。

# 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')]})

在最后一行中,lapply将遍历所有数据帧,它们将作为X参数中定义的函数的FUN参数传递,列将是数据框将存储在列表ldf_re中,其列重新排列。