如何转置数据框列表?

How to transpose a list of data frames?

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

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

按行号删除行对每个数据帧都没有问题,因为它们的结构相同。构建一个函数来执行上述操作:

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

如何在 lapply 中使用此功能?

已解决:

soup<-lapply(gooble, transposer)

这是一种使用 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) 的结果是一个对象,我们可以立即使用提取运算符的 [ 形式来删除前两行。