Save a type environment result from R in Excel

Hello! Does anyone know how to export the results in Excel in case I have data of type environment? I have done a simulation and I was to export the results.

Thank you

an environment is an assortment of variables.
You'll have to corral the contents into a data.frame(s).
How easy/hard this will be will depend on your knowledge of what you've been doing and whats gone into the environment in question...

You could have a look at the function simmer:::print.simmer to see which items to 'corral' :

simmer:::print.simmer 
function (x, ...) 
{
    cat(paste0("simmer environment: ", x$name, " | now: ", 
        now(x), " | next: ", peek(x), "\n", "{ Monitor: ", 
        x$mon$name, " }\n"))
    for (name in names(x$mon$handlers)) cat(paste0("  { ", 
        name, ": ", x$mon$handlers[[name]], " }\n"))
    for (name in names(x$resources)) cat(paste0("{ Resource: ", 
        name, " | monitored: ", x$resources[[name]][["mon"]], 
        " | server status: ", get_server_count(x, name), 
        "(", get_capacity(x, name), ")", " | queue status: ", 
        get_queue_count(x, name), "(", get_queue_size(x, 
            name), ") }\n"))
    for (name in names(x$sources)) cat(paste0("{ Source: ", 
        name, " | monitored: ", x$sources[[name]][["mon"]], 
        " | n_generated: ", get_n_generated(x, name), " }\n"))
    for (name in names(x$globals)) {
        value <- x$globals[[name]]
        is_schedule <- inherits(value, "schedule")
        if (is_schedule) 
            value <- value$schedule$init
        cat(paste0("{ Global: ", name, " | schedule: ", 
            is_schedule, " | initial value: ", value, " }\n"))
    }
    invisible(x)
}
<bytecode: 0x000001d34a12a2a8>
<environment: namespace:simmer>
> 

Thank you! My environment so far contains data in 7 columns which have a length of 500 rows. I will check how to corral them into a data frame

Thank you very much!

Ionna,

if you are talking about the output of one of the get_mon_* functions you can always use the write.csv function:

zz = terminal %>%
 get_mon_resources()
 
write.csv(zz,'zz.csv',row.names = F)

Indeed, I am taking about the output of get_mon_arrivals but when I used the write.csv function the following error occured: Error in as.data.frame.default(x[[i]], optional = TRUE) :
cannot coerce class ‘"simmer"’ to a data.frame

I think you are trying to write the wrong object (?)
Building on your example of a few days ago I have no problems writing data with

terminal <-
simmer("terminal") %>%
add_global("berth_size",0) %>%
add_resource("berth",5) %>%
add_generator("Vessel", 
      deepsea, function() { c(0, rgamma(79, 1.47,0.23))},mon=2) %>%  
add_generator("Barge", 
      barge, function() { c(0, rgamma(609,1.14,0.04))})       

terminal %>%
run(until = 500)

xx = terminal %>%
    get_mon_arrivals() %>%
    transform(waiting_time = end_time - start_time - activity_time)

write.csv(xx,'xx.csv',row.names = F)

Is this not working for you ?

I did it again and now it worked thank you very much for your help! Really appreciated it!

You are very welcome and thanks for pointing me to the simmer package.

1 Like

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.