动态定义要写入r中的csv的表

时间:2018-03-25 04:33:27

标签: r for-loop dataframe

我试图将多个数据帧写入多个.csv文件。我在网上找到了如何做后一部分,但不是前者(动态定义数据帧)。

# create separate dataframes from each 12 month interval of closed age
for (i in 1:max_age) {assign(paste("closed",i*12,sep=""),
                         mc_masterc[mc_masterc[,7]==i*12,]) 

write.csv(paste("closed",i*12,sep=""),paste("closed",i*12,".csv",sep=""),
               row.names=FALSE)
          }

在上面的代码中,问题出在write.csv语句的第一部分。它将动态创建.csv文件,但不会与我尝试指定的表中的实际内容一起创建.csv文件。 write.csv语句的第一个参数应该是什么?谢谢。

1 个答案:

答案 0 :(得分:1)

write.csv的第一个参数需要是R对象,而不是字符串。如果您不需要内存中的对象,您可以这样做:

for (i in 1:max_age) {
  df <- mc_masterc[mc_masterc[,7]==i*12,]) 

  write.csv(df,paste("closed",i*12,".csv",sep=""),
               row.names=FALSE)
}

如果你需要它们在内存中,你可以单独执行,或使用get基于字符串返回对象。单独的:

for (i in 1:max_age) {
  df <- mc_masterc[mc_masterc[,7]==i*12,]) 

  assign(paste("closed",i*12,sep=""),df)
  write.csv(df,paste("closed",i*12,".csv",sep=""),
               row.names=FALSE)
}

使用get

for (i in 1:max_age) {
  assign(paste("closed",i*12,sep=""), mc_masterc[mc_masterc[,7]==i*12,]) 

  write.csv(get(paste("closed",i*12,sep="")),paste("closed",i*12,".csv",sep=""),
           row.names=FALSE)
}