2014-04-28 2 views
0

파일을 읽는 루프를 만들고 싶습니다. paste0을 시도했지만 작동하지 않습니다. K = 1에서 k = 10까지 파일에 위의 명령을 수행하고 싶습니다.여러 파일을 읽는 방법 R

{for(k in 1:29){ 
    exprs.file <- paste0("LRRadjustedextremes0.5kgchr",k,".txt") 
    eset <- read.eset(exprs.file="/home/proj/MT_Nellore/R/eBrowser/Adjusted/exprs.file") 
    }} 

건배

답변

2

효율적인 방법은 lapply을 사용하여 파일 이름을 가진 벡터를 생성하고,리스트에 읽을 수 있습니다 :

# Read listed files 
k <- 1:29 
path <- '/home/proj/MT_Nellore/R/eBrowser/Adjusted/' 
files <- paste0(path, 'LRRadjustedextremes0.5kgchr', k, '.txt') 
eset <- lapply(X=files, FUN=read.eset) 

당신이 폴더에있는 파일이있는 경우 및 모두 읽으려는 경우도 다음과 같이 작동합니다.

path <- '/home/proj/MT_Nellore/R/eBrowser/Adjusted/' 
files <- list.files(path=path, pattern='.txt') 
eset <- lapply(X=files, FUN=read.eset) 

또한 파일 너무 커서 한 번에 하나씩로드하고 필요한 정보 만 추출하면 메모리에 적합하지 않습니다.

files <- list.files(path=path, pattern='.txt') 
data <- lapply(X=files, FUN=function(file) 
       { 
       tmp <- read.eset(file) 
       return(tmp$expr) 
       }) 
관련 문제