On Tue, 12 Dec 2023 08:24:11 +0100 Sigbert Klinke <sigb...@wiwi.hu-berlin.de> wrote:
> is it possible to get a button or link to run an example in a vignette Technically, yes, but very hard to implement in practice. Vignettes are a form of literate programming, expressed in terms of files: there's a source file containing code mixed with prose, and there are two programs, one of which extracts the code into a runnable .R file and the other renders the code together with prose and any resulting plots into a human-readable document. A link to run examples implies that there's R running somewhere, which cannot be guaranteed by the time the human-readable document is opened by the human. One way around this problem would be to embed a copy of webR [*] in the document so that R would run in the browser. This involves a significant developer effort and would either bloat your vignette to the size of an R installation or make it depend on external resources to load webR from (that could go away or spy on the user). webR is still experimental; last time I tried it, it crashed the browser tab when I invoked functions from the quadprog package. Another way would be to add a hack to the vignette engine to start a server at vignette rendering time, insert the link to this server into the vignette as it's being rendered and hope that the server is still running by the time the vignette is opened. This would require the user to re-render the vignette every time they restart the server. Technically, one could also invent a completely new kind of vignette engine that would output self-contained executable files with a document rendering engine and R built in, so that a click on the "Run examples" would use that built-in R. This is basically the webR solution without the web and with a lot of extra pain. You could also fake some of it by writing extra JavaScript (with the help of third-party statistics libraries, e.g. [**]) to do the same thing in the browser as is done in R, but that's still a lot of work for little benefit. Yet another way would be to make these links point to an external service somewhere on the Internet that would run the R code. Since R is not designed to work with untrusted input (not to mention untrusted users entering code), that would be an informational security nightmare both on your side (R would have to run in locked-down read-only disposable virtual machines hardened against sandbox escape and privilege escalation exploits) and on the GDPR side of things. There are doubtlessly more approaches, but I think they would all be this convoluted or worse. -- Best regards, Ivan [*] https://docs.r-wasm.org/webr/latest/ [**] https://github.com/svkucheryavski/mdatools-js ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel