使用循环将2个类似的数据帧列表组合成一个列表

时间:2014-11-03 12:55:18

标签: r loops

我有20个与10个位置相关的数据框(10个为男性,10个为女性)。我为我的数据添加了相同的名称(01M.txt,02M.txt,01F.txt,02F.txt,... 10M.txt,10F.txt)。 对于每个数据,我有6个变量,如(位置,计数,年份,月份,日期,男性(或女性)) 这是我的代码

  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。

提前感谢。

1 个答案:

答案 0 :(得分: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)