2014-04-17 3 views
0

큰 테이블 results.list에 22 개의 테이블 (6 개 변수 중 23544 개)이 포함되어 있습니다.R 열 순서별 테이블 목록 및 상위 100 행 선택

각 열을 특정 열 (FDR)로 찾아서 거짓 발견 비율을 선택하고 처음 100 행을 선택하고 싶습니다. 간단한 R 명령을 사용하여 수동으로이 작업을 수행 할 수 있습니다.

attach(results.list$adult.OLFvsVTA) 
sort(FDR) 
detach(results.list$adult.OLFvsVTA) 
adult.OLFvsVTA100<-adult.OLFvsVTA[1:100,] 

모든 22 개 테이블의 상위 100 개 행을 결합하고자합니다. 결합 된 벡터에서 FDR 값을 원하지 않지만 상위 100 개의 행을 하나의 열 (유전자)으로 결합하고자합니다. 적용 함수를 사용하여이 프로세스를 자동화하고 싶습니다. 일련의 시도에도 불구하고 나는 그것을 작동시키지 못합니다. r.names이라는 또 다른 벡터를 작성했습니다.이 벡터에는 내 적용 함수에 입력 할 계획 인 모든 목록의 22 개 테이블 이름이 들어 있습니다. 여러 도움말 페이지를 읽었지만 제대로 작동하지 않습니다. 어떤 도움을 주시면 감사하겠습니다.

+0

"22 테이블"이란 무엇입니까? 22 개의 변수를 가지고 있습니까? 아니면 각 관찰의 "테이블"을 나타내는 변수가'results.list'에 있습니까? – josliber

+0

최종 결과가 어떻게 보이길 기대합니까? 'ncol (results.list $ adult.OLFvsVTA)'열 데이터 프레임에 의한 2200 행, 또는 100 행에 의한 22 *'ncol (results.list $ adult.OLFvsVTA)'데이터 프레임? 관련하여,'genes' 칼럼을 사용하여 두 테이블을 어떻게 결합합니까? – BrodieG

+0

jilber : j 테이블 : 대신에 테이블의 치수 (23544 obs (행의 수) 6 개의 변수 (열의 수, 그 열 중 하나는 유전자라고 불리는 FDR)를 사용하여 data.frame을 말합니다. –

답변

0
do.call(rbind, lapply(results.list, function(dd) { dd[with(dd, order(FDR)),][(1:100), ]})) 

정도로 가정 results.list 우리 적용 할 데이터 프레임의리스트 (lapply리스트위한) FDR하여 그들을 정렬하고 제 100 행 (기능 (DD)을 {잡고 함수이다 .. .} < - 열별로 정렬하기위한 다른 stackoverflow 게시물에서 도난 당함)을 각 데이터 프레임에 적용합니다. 이 결과는 데이터 프레임 목록이됩니다. 함수을 사용하는 멋진 함수 인 do.call을 호출하고 목록에서 목록에서 우리의 함수에 대한 인수로 분해 될 목록을 호출 할 수 있습니다. 이 경우 함수는 rbind가 X 개의 행 테이블 100 개를 취하여 하나의 큰 테이블을 만듭니다. 추가 설명이 필요하면 알려주세요.

+0

약간의 주석은 피해를주지 않을 것입니다 ... – nKn

+0

안녕하세요 앤드류, 전에 비슷한 것을 시도해 보았습니다. 귀하의 솔루션을 시도하십시오. 다음 오류 메시지가 나타납니다. '[.data.frame' (dd, 주문 (FDR), 1 : 100)의 오류 : 정의되지 않은 열 –

+0

열거 할 수 있습니다 colnames (results.list [[1]] 또는 다른 어떤 t 귀하의 목록에서 가능). 그것은 나를 도울 것입니다. "FDR" –