I did simple loop and got the result in print but not sure how to output it.
This is what I coded:
>for (i in 0:45) for (j in 0:45) print(i/j)
[1] Inf
[1] 1
[1] 0.5
[1] 0.3333333
[1] 0.25
[1] 0.2
[1] 0.1666667
[1] 0.1428571
[1] 0.125
[1] 0.1111111
[1] 0.1
From here, how can i save this outcome? Should I make print (i/j) into an object or is there other way to save it into a file? thank you,
A couple of options, depending on what output you want.
1) capture.output()
will grab the output of the loop into a file:
capture.output(for (i in 0:45) for (j in 0:45) print(i/j),
file = "foo.txt")
2) if you want the numbers, then save the i/j
either as an R object via save()
or as a text file (e.g. csv) via write.csv()
, don't print it.
out <- c() ## NEVER write a loop like this! Always allocate storage & fill in
for(i in 0:45)
for(j in 0:45)
out <- c(out, i/j)
head(out)
save(out, "foo.rda")
write.csv(out, "foo.csv")
However, you need to learn about vectorising operations in R. The sort of operation you are doing in R via two loops can be conducted more efficiently in this case using:
out2 <- outer(0:45, 0:45, "/")
It really depends on what your want to do. If you just want to capture output into a text file then one of capture.output
, cat
, or sink
are the functions to look at. If you what to create an R object for later use in a session, then create an object with the desired structure: vector, list, matrix, or data.frame. Objects are then saved with the save
function. Text representations of objects can be created with dput
or dump
.
I just happen to have a function opened that writes to a file. I used sink() (see DWin's and Gavin's answer for other solutions)
sink(file = file.name, type = "output")
cat("/* File created on", date(), "*/\n")
cat("/* Walker density:", walk.dens, "*/\n")
cat("/* Capture history has", nchar(as.character(cap.hist[1,])),
"sessions and", nrow(cap.hist), "walkers", "*/\n")
cat("/* number of initial walkers:", params$num.walker, "*/\n")
cat("/* number of steps per walker:", params$n.steps, "*/\n")
cat("/* area size:", params$area, "*/\n")
cat("/* home range:", params$home.range, "*/\n")
cat("/* number of bins:", params$num.bins, "*/\n")
cat("/* capture probability:", params$prob, "*/\n")
cat("/* number of sessions:", params$sessions, "*/\n")
cat("/* number of bootstraps:", params$num.boots, "*/\n")
cat("/* number of facies:", params$n.faces, "*/\n")
cat("/* working directory:", params$work.dir, "*/\n")
cat("/* number of cores for parallel:", params$num.cores, "*/\n")
cat("/* resolution of raster:", params$rsln, "*/\n")
cat("/* function used to modify resolution:", params$rsln.fun, "*/\n")
cat("/* created walk saved:", params$write.walk, "*/\n")
cat("/* columns: cap.hist/probs/world */\n\n")
apply(mat, 1, function(x) {
cat(x["cap.hist"], x["probs"], x["supop"], ";", "\n")
})
sink()
Which produces a file (this is only the head):
/* File created on Fri Feb 25 15:02:27 2011 */
/* Walker density: 0.001 */
/* Capture history has 40 entries and 67 number of walkers */
/* number of initial walkers: 200 */
/* number of steps per walker: 100 */
/* area size: 500 */
/* home range: 100 */
/* number of bins: 10 */
/* capture probability: 0.2 */
/* number of sessions: 40 */
/* number of lines per segment: */
/* number of bootstraps: 999 */
/* number of facies: 30 */
/* working directory: q:/walker/layers */
/* calculations done in parallel: */
/* number of cores for parallel: 4 */
/* resolution of raster: 5 */
/* function used to modify resolution: */
/* created walk saved: TRUE */
/* columns: cap.hist/probs/world */
1000000000010000100000000000000100000101 0.10876344 1 ;
1000010000000010011000000000001000010000 0.09428192 1 ;
0010000000001000001001101100000010000010 0.06079921 1 ;
0000101000000000000000000000000000001001 0.05272485 1 ;
1000000001101000001000000001000100000010 0.08599779 1 ;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With