首页 文章

如何转置数据框列表? [关闭]

提问于
浏览
0

我有一个51个数据帧的列表,我需要转置它们然后删除新数据帧的前两行 . 我试图使用lapply,但不熟悉语法 . 我的操作很容易在一个数据框上完成,但使用lapply作为数据框列表,是我遇到麻烦的地方 . 这就是我为列表中的一个元素到达我的最终数据框所做的 -

john<-t(dflist[["df7"]])
john <- john[-c(1,2), ]

对于每个数据帧,按行号删除行将是正确的,因为它们在结构上是相同的 .

构建了执行上述操作的功能:

transposer <- function(df) {
  z<-t(df)
  df<-z[-c(1,2),]
}

如何在lapply中使用此功能?

解决:汤<-lapply(gooble,transposer)

我说了什么

1 回答

  • 3

    这是一种使用 lapply() 的方法 .

    # generate some data frames
    set.seed(102134)
    id <- 1:5
    aList <- lapply(id,function(x){
         data.frame(matrix(runif(50),nrow=10,ncol=5))
    })
    # transpose and remove first 2 rows
    transposeList <- lapply(aList,function(x){
         t(x)[-c(1,2),]
    })
    # print first transposed data frame
    transposeList[[1]]
    

    ..和输出,注意到我们打印的数据框中已经省略了原始数据框中表示变量 X1X2 的行:

    > # print first transposed data frame
    > transposeList[[1]]
            [,1]      [,2]      [,3]      [,4]      [,5]       [,6]       [,7]
    X3 0.1128006 0.5884873 0.8532827 0.5957727 0.6995990 0.09765447 0.69149804
    X4 0.1239681 0.7624771 0.9756067 0.1251610 0.4954070 0.92652298 0.04800376
    X5 0.3698154 0.6789413 0.9660355 0.6613972 0.5099627 0.97766102 0.97139575
            [,8]       [,9]     [,10]
    X3 0.7731442 0.03916568 0.8787288
    X4 0.3829343 0.41939016 0.9668663
    X5 0.8865407 0.63437436 0.6774895
    >
    

    这个答案中一个重要的微妙之处是 lapply() 中匿名函数中的代码行 t(x)[-c(1,2),] . 由于 t(x) 的结果是一个对象,我们可以立即使用提取运算符的 [ 形式删除前两行 .

相关问题