[R] Checking for adequate disk space
Sundar Dorai-Raj
sundar.dorai-raj at pdf.com
Wed Oct 3 23:11:55 CEST 2007
bogdan romocea said the following on 10/3/2007 12:32 PM:
> Run df from R; here's an example (run on Interix):
> $ df /dev/fs/C/WINDOWS
> Filesystem 512-blocks Used Available Capacity Type Mounted on
> //HarddiskVolume2 77706400 34632424 43073976 45% ntfs /dev/fs/C
>
> See man df for details.
>
Hi, Bogdan,
Thanks. With the system command this works:
disk.usage <- function(path = Sys.getenv("HOME")) {
if(length(system("which df", intern = TRUE, ignore = TRUE))) {
cmd <- sprintf("df %s", path)
exec <- system(cmd, intern = TRUE, ignore = TRUE)
exec <- strsplit(exec[length(exec)], "[ ]+")[[1]]
exec <- as.numeric(exec[3:4])
structure(exec, names = c("used", "available"))
} else {
stop("'df' command not found")
}
}
du <- disk.usage()
du[1]/sum(du)
Of course, for Windows, a user will need 'df' which comes with cygwin.
Thanks,
--sundar
>
>> -----Original Message-----
>> From: r-help-bounces at r-project.org
>> [mailto:r-help-bounces at r-project.org] On Behalf Of Sundar Dorai-Raj
>> Sent: Wednesday, October 03, 2007 2:41 PM
>> To: r-help at r-project.org
>> Subject: [R] Checking for adequate disk space
>>
>> Hi, all,
>>
>> (version info at end)
>>
>> I'm running a script which takes input files, does some analysis, and
>> writes the output to csv files. Last night I ran the script (it took
>> ~6.5 hours) thinking all would go well since it ran on a
>> subset of the
>> data without issue. However, when I returned this morning
>> more than half
>> the output files had no data. I checked the Rout file for errors and
>> there were none. After spending about an hour debugging the script I
>> learned the problem was not the script, but I ran out of disk
>> space. But
>> write.table, along with the rest of the script, still continued as if
>> nothing was wrong.
>>
>> My question is: How can I programmatically determine if a user has
>> adequate space to use write.* and then throw an error if they
>> don't? I'm
>> running R on Linux (RHEL4). For the short term, I will accept
>> Linux-only
>> solutions but would prefer an OS-free solution.
>>
>> My quick-and-dirty solution is to use:
>>
>> write.csv(x, file)
>> if(file.info(file)["size"] == 0)
>> stop("you *may* have run out of disk space")
>>
>> However, this solution may not work as there may be other reasons the
>> file size is 0 (e.g. x is NULL or 0-length?).
>>
>> > x <- character(0)
>> > write.table(x, "file", col.names = FALSE, row.names = FALSE)
>> > file.info("file")["size"]
>> size
>> file 0
>> >
>> > version
>> _
>> platform i686-pc-linux-gnu
>> arch i686
>> os linux-gnu
>> system i686, linux-gnu
>> status
>> major 2
>> minor 5.1
>> year 2007
>> month 06
>> day 27
>> svn rev 42083
>> language R
>> version.string R version 2.5.1 (2007-06-27)
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list