2016-07-29 7 views
1

나는 data.frames 목록을 가지고 있으며 data.frame의 값을 조건부로 재 지정하려고합니다. 난 그냥 하나의 data.frame에 할당한다면 나는data.frames 목록에서 값을 부분 집합하는 방법

DF[DF==9] <- NA 

는 NA에 9있는 data.frame에있는 모든 항목을 설정하는 무언가 같이 말할 것입니다. 그러나, 나는이 목록의 각 data.frame에이 같은 절차를 수행 할 lapply를 사용하려고 대신 9의 각 값의

List_of_DFs <- list(DF1, DF2, DF3) 
List_of_DFs <- lapply(List_of_DFs, function(x) x[x==9] <- NA) 

를 NA되고, 전체 목록의 항목은 NA가된다. 따라서 위의 경우 List_of_DFsNA,NA,NA이됩니다.

나는 for 루프와 [[]] 하위 집합 연산자로 이것을 할 수 있다는 것을 알고 있지만 더 나은 방법이 있어야한다고 생각합니다.

재미 있거나 관련성이있는 경우이 문제의 동기는 XLConnect에서 가져온 data.frames 목록입니다. 이후에는 행별로 data.frames를 바인딩하지만 먼저 열에 일부 문자 값을 놓으려고합니다. 그 숫자는 모두 숫자 여야합니다. 따라서 숫자로 변환 한 다음 행별로 바인딩 할 수 있습니다. 우리는 mutate_eachdplyr를 사용하는 경우 우리는 열 값을 변경할 수 있습니다

답변

0

우리는 data.frame

lapply(List_of_DFs, function(x) {x[x==9] <- NA; x}) 

을 얻을 수 x을 반환해야 또는 다른 옵션은 replace

lapply(List_of_DFs, function(x) replace(x, x == 9, NA)) 

입니다 9에서 NA까지

lapply(List_of_DFs, function(x) x %>% 
            mutate_each(funs(replace(., .==9, NA)))) 
관련 문제