[ESS] How to get working Rnw file name inside script
Susumu Tanimura
@rum|n@t @end|ng |rom gm@||@com
Thu May 9 03:22:51 CEST 2024
Hi Rrof. Goulet,
Thank you very much for sharing the function.
It works.
Now I noticed that the return value of commandArgs() inside Rnw with
ess includes a working Rnw file name.
\begin{Schunk}
\begin{Sinput}
> commandArgs()
\end{Sinput}
\begin{Soutput}
[1] "/usr/lib/R/bin/exec/R"
[2] "--no-restore"
[3] "--no-echo"
[4] "--args"
[5] "nextArghogehoge.RnwnextArg--options=output='hogehoge-woven.tex'"
\end{Soutput}
\end{Schunk}
--
Susumu Tanimura
On Wed, 8 May 2024 22:17:36 +0000
Vincent Goulet <Vincent.Goulet using act.ulaval.ca> wrote:
> I'm not sure this is what you're looking for, but here goes. I have
> been using the following function for a number of years to extract
> the name of the file from which Sweave is called.
>
> ###
> ### getSourceName()
> ###
> ## Extract the name of the file used in the command 'Sweave' calling
> ## this function.
> ##
> ## Value
> ##
> ## Filename as a character string
> ##
> getSourceName <- function()
> {
> args <- commandArgs(FALSE)
>
> ## If Sweave is launched with
> ##
> ## R -e "Sweave('foo.Rnw', ...)"
> ##
> ## the expression is one of the arguments and we can extract the
> ## filename.
> if (length(cmd <- grep("Sweave\\(", args, value = TRUE)))
> return(regmatches(cmd,
> regexpr("(?<=Sweave\\(['\"]).*(?=['\"])",
> cmd, perl = TRUE)))
>
> ## If Sweave is launched with
> ##
> ## R CMD Sweave --encoding="utf-8" foo.Rnw
> ##
> ## the argument containing the relevant information is a character
> ## string of the form
> ##
> ## nextArg--encoding=utf-8nextArgfoo.Rnw
> ##
> ## The arguments are in the order they were entered at the command
> ## line.
> if (length(cmd <- grep("^nextArg", args, value = TRUE)))
> return(grep("^--|^$", strsplit(cmd, 'nextArg', fixed = TRUE)
> [[1L]], invert = TRUE, value = TRUE))
> }
>
> Hope this helps!
>
> v.
>
> Vincent Goulet
> Professeur titulaire
> École d'actuariat, Université Laval
>
> > Le 28 avr. 2024 à 01:57, Susumu Tanimura via ESS-help
> > <ess-help using r-project.org> a écrit :
> >
> > Dear all,
> >
> > When using the Stangle() function within an Rnw file to insert an
> > entire R code into an appendix of a document, it is necessary to
> > provide the working Rnw file name. While manually entering the name
> > is a viable option, it would be beneficial for me to implement it
> > within a template for Rnw files.
> >
> > My question is how to get working Rnw file name inside script.
> >
> > This issue is not directly related to ESS, but the solution must be
> > compatible with ESS and Emacs.
> >
> > Thank you
> >
> > --
> > Susumu Tanimura
> >
> > ______________________________________________
> > ESS-help using r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/ess-help
>
More information about the ESS-help
mailing list