2011-12-09 74 views
10

空的CSV文件,我有一个运行于多个数据集的一组功能,并创建一套浓度反应模型的R脚本。我想这样做是模型参数和其他结果保存了一个CSV文件。创建R中

我的计划是让脚本创建一个空的CSV文件,然后作为脚本的进展,结果被附加到CSV文件。每次脚本运行时,我都希望结果被覆盖。

我试图创建一个使用

system("copy /y NUL results.csv > NUL") 

创建该文件的空文件,但没有创建的文件。当在Windows终端直接运行该命令(即,copy/y NUL results.csv > NUL)工作正常。

我是否缺少一些简单的东西?系统是Windows XP。

谢谢大家!

回答

17

file.create()是否有什么问题,它可以跨操作系统使用?

file.create("my.csv") 
# [1] TRUE 

然后,您可以追加到文件,例如,使用append=TRUE参数write.table(),也许是这样的:

df <- data.frame(a=1:4, b=4:1) 
write.table(df, file="my.csv", sep=",", row.names=FALSE, append=TRUE) 
write.table(df, file="my.csv", sep=",", row.names=FALSE, 
      col.names=FALSE, append=TRUE) 

编辑如果你会做一吨写入每个文件的,它可以节省大量的时间来打开该文件的连接一次,并且只完成后关闭它。如果情况并非如此,上述方法工作得很好。

+4

另外,尝试'中肯(“文件\\”。)'来看到一些其他文件处理设施的基础R. –

+0

可用它的工作原理,但我收到这样的:'在write.table(DF,文件=“my.csv” 09月=“”,row.names = FALSE ,: 将列名追加到文件中 – Aerox

0

如何只

echo > results.csv 
+0

我得到使用'回声> results.csv'类似的结果。我认为这个问题是与系统调用,而不是实际运行的命令,任何命令到标准输出(例如,'系统(“回声你好!”)'不产生任何输出。 – sinclairjesse

4

因为它是shell命令,所以应该使用shell而不是system。

shell("copy /y NUL results.csv > NUL") 

编辑。更便携的解决方案:

cat(NULL,file="results.csv") 
+2

这是不能跨操作系统移植,从而带走R. –

+0

隐藏的宝藏好点的德克,鉴于这种情况,我会接受Josh的答案之一。 – sinclairjesse

+0

系统是Windows XP! –