This is a test version of Biostars. For the public version, visit https://www.biostars.org.
"Export" package in R - do analogues exist?

Hi everyone!

I had one favorite function, extremely useful for adjusting plots: graph2ppt. It allowed to change the text parts of the plot (labels, legend, everything) directly in the power point.

It was inside the "export" package, which is removed from CRAN repository (https://cran.r-project.org/web/packages/export/index.html). I tried to install the version from the archive, but there are some issues and the package doesn't work.

Do you know any analogues of that function?

Thank you in advance!

r

1 answer

You should be able to get it working by downloading the gzipped 'tarball' from HERE, and then installing manually. You may, first, have to install other dependencies, though. Here is what I had to do:

install.packages('export_0.2.2.tar.gz')
ERROR: dependencies ‘officer’, ‘rvg’, ‘flextable’, ‘rgl’, ‘stargazer’ are not available for package ‘export’

Okay, so...

install.packages('officer')
install.packages('rvg')
install.packages('flextable')
install.packages('rgl')
install.packages('stargazer')

install.packages('export_0.2.2.tar.gz')

Now load the package:

require(export)

graph2ppt
function (...) 
graph2office(type = "PPT", ...)
<bytecode: 0x5a71038>
<environment: namespace:export>

Kevin

Thank you! Did you try to export a plot using the function? Did it work?

I tried to copy your example. I downloaded the package (and it lies in the "download" folder, should I place it somewhere else?) and ran the code that you used. I see the next error:

error

(the prinscreen seems not to attach properly for some reason, so I copy the error as a text: "Installing package into ‘C:/Users/Poisk/Documents/R/win-library/3.6’ (as ‘lib’ is unspecified) Warning in install.packages : package ‘export_0.2.2.tar.gz’ is not available (for R version 3.6.3)"

What do I do wrong?

You can place the archive / file anywhere on your disk. As you are on Windows, please install it like this (assuming that the file is saved under 'C:/Users/Poisk/download/'):

install.packages('C:/Users/Poisk/download/export_0.2.2.tar.gz', repos = NULL, type = 'source')

All other packages installed in the correct way - yes?

Yes, and the "export" package installed :) But it doesn't work anyway:

ggplot(alls_nolncRNA,aes(x=Length, fill=Source)) + geom_density(color='black',alpha=0.5) + xlim(c(0,20000)) + xlab('Transcript length, bp') + ylab('Density'))

graph2ppt(file="Rplot.pptx",width=7,height=6)

Error: 'ph_with_vg_at' is defunct. Use 'officer::ph_with' instead. See help("Defunct")

Does it export a plot in your case?

You can probably just edit the function, to be honest. Here it is (just type graph2office at your command prompt):

graph2office  <- function (x = NULL, file = "Rplot", fun = NULL, type = c("PPT", 
    "DOC"), append = FALSE, aspectr = NULL, width = NULL, height = NULL, 
    scaling = 100, paper = "auto", orient = ifelse(type[1] == 
        "PPT", "landscape", "auto"), margins = c(top = 0.5, right = 0.5, 
        bottom = 0.5, left = 0.5), center = TRUE, offx = 1, offy = 1, 
    upscale = FALSE, vector.graphic = TRUE, ...) 
{
    margins = rep_len(margins, 4)
    names(margins) = c("top", "right", "bottom", "left")
    type = toupper(type)
    type = match.arg(type, c("PPT", "DOC"))
    if (type == "PPT" | type == "PPTX") {
        ext = ".pptx"
        type = "PPT"
    }
    if (type == "DOC" | type == "DOCX") {
        ext = ".docx"
        type = "DOC"
    }
    file = sub("^(.*)[.].*", "\\1", file)
    file = paste0(file, ext)
    obj = x
    if (is.null(obj) & is.null(fun)) {
        p = captureplot()
    }
    else {
        p = obj
    }
    if (inherits(p, "list")) {
        stop("base R plots cannot be passed as objects, use ggplot2 or lattice plots instead")
    }
    myplot = if (is.null(fun)) {
        function(pl = p) print(pl)
    }
    else {
        fun
    }
...
...
    print(doc, target = file)
    message(paste0("Exported graph as ", file))
}

You could start by changing instances of ph_with_vg_at to officer::ph_with. There may be subsequent errors, but I am not to know that yet.

Ohh, it indeed is something inside. There is nothing about ph_with_vg_at or officer::ph_with in the graph2office function. It seems to be something inside rgv package, or officer (here is the picture: https://ibb.co/TcXxbnN )

Thank you very much for your help!

Could you probably test whether the exporting function works in your case? Just to understand whether it's a problem of my computer, or it exists for everyone who has R 3.6.3. (if you have R 3.6.3, of course)

Thank you! That's exactly what I was looking for. And thank you for your help in general.

Btw :). I tried all them, they are not supported by the last R version too. Ok, I will modify plot in the R itself and hope that the developers will fix it one day. Just for information

Log in to answer this question.