【问题标题】:How do I reorder columns for all data frames in a list in R?如何重新排序 R 中列表中所有数据框的列?
【发布时间】:2017-08-10 07:57:37
【问题描述】:

我已经有一个数据框列表(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")])

错误提示维度数不正确

对不起,如果这是一个简单的问题,并提前感谢您的帮助!

-全新的 R 用户

【问题讨论】:

    标签: r dataframe lapply


    【解决方案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 并重新排列它们的列。

    【讨论】:

    • 非常感谢 - 我现在了解这种情况下 FUN 和功能之间的区别。很高兴知道我至少很接近
    • 很高兴为您提供帮助。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    相关资源
    最近更新 更多