How to save print (i / j) to output file?

I made a simple loop and got the result in print, but not sure how to output it.

This is what I encoded:

>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 result? Should I print (i / j) to an object or is there another way to save it to a file? thanks,

+4
source share
3 answers

A couple of parameters, depending on what result you want.

1) capture.output() will capture the loop output to a file:

 capture.output(for (i in 0:45) for (j in 0:45) print(i/j), file = "foo.txt") 

2) if you want numbers, then save i/j either as an R object via save() , or as a text file (e.g. csv) via write.csv() , do not 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 the vectorization operation in R. The type of operation that you perform in R after two cycles can be performed more efficiently in this case using:

 out2 <- outer(0:45, 0:45, "/") 
+13
source

It really depends on what you want to do. If you just want to capture the output into a text file, then the functions you need to look at are one of capture.output , cat or sink . If you need to create an R object for later use in a session, create an object with the required structure: vector, list, matrix, or data.frame. Then the objects are saved using the save function. Textual representations of objects can be created using dput or dump .

+3
source

I just have a function open for writing to a file. I used sink () (see DWin and Gavin Answers 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() 

What creates the file (this is just 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 ; 
+1
source

Source: https://habr.com/ru/post/1341323/


All Articles