2014-11-03 2 views
0

10 개의 위치와 관련된 20 개의 데이터 프레임이 있습니다 (남성의 경우 10 개, 여성의 경우 10 개). 내 데이터 (01M.txt, 02M)에 대해 동일한 이름을 지정합니다. txt, 01F.txt, 02F.txt, ... 10M.txt, 10F.txt). 각 데이터에 대한 내가 같은 6 개 변수를 (위치, 개수, 년도, 달, 일, 남성 (또는 여성) 이 내 코드입니다루프를 사용하여 2 개의 데이터 프레임 목록을 하나의 목록으로 결합합니다.

rm(list = ls(all = TRUE))# clear workspace 
    setwd("~/NewJob/MyData/") 
    library(reshape2) 
    require(plyr) 
    library(dplyr) 

    InputM <- paste0(formatC(1:10, width = 2, flag = "0"),"M.txt") 
    InputF <- paste0(formatC(1:10, width = 2, flag = "0"),"F.txt") 
    Output <- paste0(formatC(1:10, width = 2, flag = "0"), "Mixed.txt") 

dataM <- list() 
dataF <- list() 
data <- list() 

for (i in 1:length(InputM)){ 
dataM[[i]]<- read.csv(InputTM[i], header = T,sep="\t")} 
for (i in 1:length(InputF)){ 
dataF[[i]] <- read.csv(InputF[i], header = T,sep="\t")} 
data[[i]]<- cbind(dataM[[i]],dataF[[i]]) 
write.table(data[[i]], file = Output[i], sep = "\t",col.names = TRUE, quote = FALSE, row.names=FALSE) 

이 코드를 실행하면 나는 dataF 중복 얻을.

dataM과 dataF의 조합을 다음과 같은 7 가지 변수로 지정하고자합니다. 위치, 개수, 연도, 월, 일, 남성, 여성) 해당 날짜가 없으면 NA를 입력 할 수 있습니다.

감사합니다. 루프없이

+0

당신은 바로 @beginneR 있습니다! –

+0

U는 루프를 사용해야합니까? –

답변

0

는 :

setwd("~/NewJob/MyData/") 
InputM = grep('M', list.files()) 
InputF = grep('F', list.files()) 

listM = lapply(InputM, function(x){ read.csv(x, head=T, sep='\t')}) 
listF = lapply(InputF, function(x){ read.csv(x, head=T, sep='\t')}) 

dataM = do.call(rbind.data.frame, listM) 
dataF = do.call(rbind.data.frame, listF) 
+0

감사합니다 @ Adii_하지만이 작동하지 않습니다. 어쩌면 코드에 뭔가가 누락되었을 수 있습니다! –

+0

편집 된 답변조차도 작동하지 않습니다. 출력은 목록이어야하며 write.table()을 사용하여 데이터 프레임에 넣을 수 있습니다. –

관련 문제