【问题标题】:R for loop only completing first iterationR for循环仅完成第一次迭代
【发布时间】:2015-06-18 14:01:34
【问题描述】:

我正在尝试按列 Customer.Code 拆分 csv 文件,并将生成的 Dataframes 写入单独的 csv 文件。

splittit<- function(file){

data<-read.csv(file)

data<-split(data,data$Client.Code)

x<- length(data)

for(i in x){
  custdata<- data[i] 
  custdata<- as.data.frame(custdata)
  customer<- custdata[1,18]
  customer<- as.vector(customer)
  filename<- paste(as.character(customer),".csv")
  write.csv(custdata, file= filename)
}
}

如果有人可以帮助我了解为什么只编写第一个 csv 文件,我将不胜感激。

谢谢 提前

【问题讨论】:

  • 经典:将for(i in x) 改为for(i in 1:x)
  • 打败我 :) - 花了一个小时寻找一次,永远不会忘记它。
  • 我认为write.cv 会覆盖文件。您必须改进您的代码才能使 write.csv 的参数具有不同的名称。看看这个讨论:*.com/questions/30835815/…
  • 这里完全是初学者,所以我知道这将是一些小事!!
  • @Hav0k 您应该将其发布为答案以便解决。

标签: r for-loop


【解决方案1】:

你定义了:

x<- length(data)

它给你一个整数。但是,在您的 for 循环中,您不想遍历单个整数,而是遍历 1:x 的整个范围。因此将for(i in x) 更改为for (i in 1:x)

【讨论】: