2017-12-29 5 views
-1

나는 51 개의 데이터 프레임 목록을 가지고있다. 나는 그것들을 조 변경 한 다음 처음 두 개의 행에 새로운 데이터 프레임을 제거해야한다. lapply를 사용하려고하지만 구문에 익숙하지 않습니다. 내 작업은 하나의 데이터 프레임에서 수행하기 쉽지만 데이터 프레임 목록에 lapply를 사용하면 문제가 발생합니다. 그들이 구조에서 동일하기 때문에 행 번호에 의한 행의 제거는, 각 데이터 프레임 잘 될 것입니다데이터 프레임 목록을 조 변경하는 방법은 무엇입니까?

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

을 - 이것은 내가리스트의 한 요소에 대한 내 최종 데이터 프레임에 도착했던 것입니다. 내가 lapply에서이 기능을 사용하려면 어떻게해야

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

:

위의 작업을 수행 할 수있는 기능을 내장?

이 해결 : I가

답변

2

여기 lapply()를 이용한 방식이라고하는 일 -lapply 스프 < (gooble, transposer)

. 원래의 데이터 프레임의 변수 X1X2 나타내는 행이 데이터 프레임에서 생략되었음을 주목

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

.. 그리고 출력

, 우리는 인쇄 :

> # 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)의 결과가 객체이기 때문에, 우리는 즉시 형태의 추출 연산자를 사용하여 처음 두 행을 제거 할 수 있습니다.

관련 문제