2017-02-13 8 views
0

지구 환경에 몇 가지 데이터 프레임 (4 개, 모두 .csv)을로드했으며 모두 결국 하나의 새 데이터 프레임에 모든 데이터 프레임을 쌓도록하려는 경우 rbind. 내가 아는 한, 동일한 헤더로 데이터 프레임을 rbind 개만 만들 수 있습니다. 그래서 그 헤더를 같은 이름으로 변경하려고합니다.글로벌 환경에서 여러 데이터 프레임의 헤더 변경

# group all files with the extension .csv 
filenames <- Sys.glob("*.csv") 

# then I tried to rename them with a `for loop` 
for(i in filenames) { 
    names(filenames[i]) <- "epitope" 
} 

그것은 그래도 작동하지 않았다 :

나는 다음과 같은 노력했다. 문제는 R이 독립적 인 data.frames 그 자체 (머리글을 변경해야 함)로, 대신 단순히 문자열로 filename (즉 네 개의 데이터 프레임)의 요소를 처리하지 않는다고 생각합니다. 내가 입력 할 때 : 내 데이터 프레임 (이름 abc_65prots_all_15mers.csv를) OUPUT하는 R을 기대 할 때

filenames[1] 

나는

[1] "abc_65prots_all_15mers.csv" 

를 얻을.

+1

사용'얻을 문제를 해결 (파일 이름 [I])는'(GET ((I 파일명에서) { 이름을 실제 물체 – GGamba

+1

'를 참조 할 파일 이름은 [I])) <- "에피토프" }' 다음 내가 GET에 '오류를 얻었다는 ('* TMP *') : 객체 'NA' – BCArg

+0

가'i'가 같은 숫자가 아닌 found'하지 기대하는 것일 수도 있지만 실제 파일 이름입니다. 'for (i in 1 : length (filenames)) '를 시도해 볼 수 있습니다. –

답변

0

# group all files with the extension .csv 
filenames <- Sys.glob("*.csv") 

# Then the loop 
     for(i in filenames) { 
     tables <- get(i) 
     names(tables) <- "epitope" 
     assign(i, tables) 
    } 
0

이 테스트되지 않은 의사 코드에서 이와 같은 작업을 수행 할 수 있습니다. lapply이 관료주의를 처리 할 것입니다. getassign 사용

mf <- Sys.glob(".csv") 

xy <- lapply(mf, read.table, header = TRUE) # read files into a list 

# rename each dataset 
xy <- lapply(xy, FUN = function(x) { 
    names(x) <- c("vector of names") 
}) 

do.call(rbind, xy) # merge all datasets 
+0

'filenames <- Sys.glob ("*. csv")' 'xy <- lapply (X = filenames, read.table, header = T)' 'XY <- lapply (XY, FUN = 함수 (X) { 이름 (X) <- C ("펩티드") })'' 최종 <- do.call (rbind, XY)' '' 을 '[1] [1] "펩타이드" [2] "펩타이드" [3] "펩타이드" [4] "펩타이드"final' 불행하게도 꽤 내가 필요... – BCArg