2011-09-07 7 views
3

2000 개의 구성 요소 데이터 프레임으로 구성된 큰 목록이 있습니다. 다음은 예입니다R : 목록 내부에 함수 적용

set.seed(1234) 
mydf1 <- data.frame(v = c(1:5), x = rnorm(5, 0.06, 0.01)) 
mydf2 <- data.frame(v = c(1:5), x = rnorm(5, 0.06, 0.01)) 
mydf3 <- data.frame(v = c(1:5), x = rnorm(5, 0.06, 0.01)) 
mylist <- list(mydf1, mydf2, mydf3) 

mylist 

[[1]] 
    v   x 
1 1 0.03792934 
2 2 0.05277429 
3 3 0.06084441 
4 4 0.02654302 
5 5 0.05429125 

[[2]] 
    v   x 
1 1 0.05506056 
2 2 0.04425260 
3 3 0.04453368 
4 4 0.04435548 
5 5 0.04109962 

[[3]] 
    v   x 
1 1 0.04522807 
2 2 0.04001614 
3 3 0.04223746 
4 4 0.05064459 
5 5 0.05959494 

I 미만 < 0.05 (각 목록 구성 요소에서)는 X의 값이 전체 목록을 부분 집합 새로운 목록을 creat에 싶다.

mylist1 <- mylist[ which (x < 0.05),] 

도움이되지 않습니다. 감사합니다 ...

+1

적용 참조를 sapply, lapply 및 tapply???. 배우고 연습하십시오. 너는 그것을 후회하지 않을 것이다. –

답변

2

한 가지 방법은 함수와 같은 일부 코드 lapply를 사용하는 것입니다. ? mydf1[mydf1$x<0.05, ] 이후

하면, 코드가되고 관심있는 부분 집합 반환합니다

lapply(mylist, function(x)x[x$x<0.05, ]) 

[[1]] 
    v   x 
1 1 0.04792934 
4 4 0.03654302 

[[2]] 
[1] v x 
<0 rows> (or 0-length row.names) 

[[3]] 
[1] v x 
<0 rows> (or 0-length row.names) 
+0

작품 ... 고마워 ... –

3

lapply(mylist, function(y) subset(y, x < 0.05))

+0

네, 그게, 감사합니다 .. –

2

당신은 plyr 패키지의 기능을 llply 사용할 수도 있습니다. 이 일을

library(plyr) 
mylist1 = llply(mylist, subset, x<0.05) 

mylist1 

[[1]] 
    v   x 
1 1 0.04792934 
4 4 0.03654302 

[[2]] 
[1] v x 
<0 rows> (or 0-length row.names) 

[[3]] 
[1] v x 
<0 rows> (or 0-length row.names) 
+0

+1 plyr이 문제에 대한 uneccesary지만 매우 R 초보자를 알고 유용합니다. –

+0

작품 ... 감사합니다 ... –