如何转置数据框列表?
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]]
..和输出,注意原始数据框中表示变量 X1
和 X2
的行已从我们打印的数据框中省略:
> # 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)
的结果是一个对象,我们可以立即使用提取运算符的 [
形式来删除前两行。
我有一个包含 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]]
..和输出,注意原始数据框中表示变量 X1
和 X2
的行已从我们打印的数据框中省略:
> # 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)
的结果是一个对象,我们可以立即使用提取运算符的 [
形式来删除前两行。