【问题标题】:combine 2 similars list of data frame into one list using a loop使用循环将 2 个相似的数据框列表合并为一个列表
【发布时间】:2014-11-03 12:55:18
【问题描述】:

我有 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 个变量结合起来,如下所示: location,count,Year,Month,day,male,female) 没有得到对应日期的时候可以放NA。

提前致谢。

【问题讨论】:

  • 你是对的@beginneR!

标签: r loops


【解决方案1】:

无循环:

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)

【讨论】:

  • 感谢@Adii_,但这不起作用。也许您的代码中缺少某些东西!
  • 即使编辑后的答案也不起作用。输出必须是一个列表,然后我可以使用 write.table() 将其放入数据框中。
猜你喜欢
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 2021-02-23
  • 2014-08-04
  • 2023-02-18
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
相关资源
最近更新 更多