2017-12-29 9 views
-1

私は51のデータフレームのリストを持っています。それらを転置して、新しいデータフレームの最初の2つの行を削除する必要があります。私はlapplyを使用しようとしていますが、構文には慣れていません。私の操作は1つのデータフレームでは簡単ですが、データフレームのリストにlapplyを使用すると、問題が発生します。彼らは構造が同じであるため、行番号によって行の除去は、各データフレームの罰金となりますデータフレームのリストを転記する方法は?

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

を - これは私がリストの1つの要素のための私の最終的なデータフレームに到着しなかったものです。私はlapplyでこの機能を使用するにはどうすればよい

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

は、上記の操作を行う機能を内蔵しますか?

解決しよう:私は

答えて

2

ここlapply()を用いたアプローチであると言う何-lapplyスープ<(gooble、トランスポーザ)

# 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を表す行は、我々は、印刷データフレームから省略されていることを指摘し、出力を..and:

> # 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 
> 

この答えで重要な微妙です匿名機能のt(x)[-c(1,2),]コード行は、lapply()にあります。 t(x)の結果がオブジェクトであるため、すぐに最初の2つの行を削除するために、抽出演算子の[形式を使用することができます。

関連する問題