[Rd] index.search

2014-06-15 Thread Adrian Dușa
Dear r-devel,

I am trying to automatically check if two successive versions of a
package have the same results (i.e. code not broken), by parsing the
example sections for each function against a previously tested
version.

While trying to replicate the code from example(), I am facing an
error related with te "index.search" function (line 7 in the example()
code).
This is the code I am using:

example2 <- function (topic, package = NULL, lib.loc = NULL,
character.only = FALSE,
give.lines = FALSE, local = FALSE, echo = TRUE, verbose =
getOption("verbose"),
setRNG = FALSE, ask = getOption("example.ask"), prompt.prefix =
abbreviate(topic, 6), run.dontrun = FALSE)
{
if (!character.only) {
topic <- substitute(topic)
if (!is.character(topic))
topic <- deparse(topic)[1L]
}
pkgpaths <- find.package(package, lib.loc, verbose = verbose)
file <- index.search(topic, pkgpaths, TRUE)
return(file)
}

> example2("deMorgan", package="QCA")
Error in example2("deMorgan", package = "QCA") :
  could not find function "index.search"


I've tried an explicit library(utils), with the same result.
?index.search doesn't yield anything better...

Could anyone point me in the right direction, please?
Thank you,
Adrian


-- 
Adrian Dusa
University of Bucharest
Romanian Social Data Archive
1, Schitu Magureanu Bd.
050025 Bucharest sector 5
Romania
Tel.:+40 21 3126618 \
+40 21 3120210 / int.101
Fax: +40 21 3158391

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] index.search

2014-06-15 Thread Gabriel Becker
Adrian,

R isn't really designed to use multiple versions of the same package in the
same R session. To do what you want you'll need to unload one version of
the package before you load the next, which will work some percentage of
the time between 50 and 100 ("usually"), but when it can be done it is
relatively easy to do.

 Packages with C code will give you problems, or at least they used to. I
haven't tried recently.  See Prof Ripley's response here: See
https://stat.ethz.ch/pipermail/r-devel/2009-February/052229.html

For packages that can be unloaded/reloaded safely, is there a reason you
can't just use the existing example function with two different library
locations (lib.loc argument) with the two package versions installed?

~G


On Sun, Jun 15, 2014 at 6:22 PM, Adrian Dușa  wrote:

> Dear r-devel,
>
> I am trying to automatically check if two successive versions of a
> package have the same results (i.e. code not broken), by parsing the
> example sections for each function against a previously tested
> version.
>
> While trying to replicate the code from example(), I am facing an
> error related with te "index.search" function (line 7 in the example()
> code).
> This is the code I am using:
>
> example2 <- function (topic, package = NULL, lib.loc = NULL,
> character.only = FALSE,
> give.lines = FALSE, local = FALSE, echo = TRUE, verbose =
> getOption("verbose"),
> setRNG = FALSE, ask = getOption("example.ask"), prompt.prefix =
> abbreviate(topic, 6), run.dontrun = FALSE)
> {
> if (!character.only) {
> topic <- substitute(topic)
> if (!is.character(topic))
> topic <- deparse(topic)[1L]
> }
> pkgpaths <- find.package(package, lib.loc, verbose = verbose)
> file <- index.search(topic, pkgpaths, TRUE)
> return(file)
> }
>
> > example2("deMorgan", package="QCA")
> Error in example2("deMorgan", package = "QCA") :
>   could not find function "index.search"
>
>
> I've tried an explicit library(utils), with the same result.
> ?index.search doesn't yield anything better...
>
> Could anyone point me in the right direction, please?
> Thank you,
> Adrian
>
>
> --
> Adrian Dusa
> University of Bucharest
> Romanian Social Data Archive
> 1, Schitu Magureanu Bd.
> 050025 Bucharest sector 5
> Romania
> Tel.:+40 21 3126618 \
> +40 21 3120210 / int.101
> Fax: +40 21 3158391
>
> __
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



-- 
Gabriel Becker
Graduate Student
Statistics Department
University of California, Davis

[[alternative HTML version deleted]]

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] index.search

2014-06-15 Thread Adrian Dușa
Hi Gabriel,

Actually, I am not going to use multiple versions of the same package,
but always the last version. What I would like to do is:
- to run all examples from all functions in the package, saving the
results into a list
- compare the list to an already saved one (from the previous version
of the package), possibly using all.equal()

I tried using the example() function, like this:
example("deMorgan", package="QCA", give.lines=TRUE)

That returns the commands from the examples section, but if a command
is split over multiple rows I cannot use it automatically.

I could also use:
capture.output(example("deMorgan", package="QCA", ask=FALSE))

That would indeed work for the printed output, but I would also like
to compare the objects saved by the deMorgan() function. If that is
not possible, I'll probably be happy with the printed output.

I'd still be curious as to why the index.search() function cannot be
used... (it seems useful for other purposes).

Best wishes,
Adrian


On Mon, Jun 16, 2014 at 5:46 AM, Gabriel Becker  wrote:
> Adrian,
>
> R isn't really designed to use multiple versions of the same package in the
> same R session. To do what you want you'll need to unload one version of the
> package before you load the next, which will work some percentage of the
> time between 50 and 100 ("usually"), but when it can be done it is
> relatively easy to do.
>
>  Packages with C code will give you problems, or at least they used to. I
> haven't tried recently.  See Prof Ripley's response here: See
> https://stat.ethz.ch/pipermail/r-devel/2009-February/052229.html
>
> For packages that can be unloaded/reloaded safely, is there a reason you
> can't just use the existing example function with two different library
> locations (lib.loc argument) with the two package versions installed?
>
> ~G
>
>
> On Sun, Jun 15, 2014 at 6:22 PM, Adrian Dușa  wrote:
>>
>> Dear r-devel,
>>
>> I am trying to automatically check if two successive versions of a
>> package have the same results (i.e. code not broken), by parsing the
>> example sections for each function against a previously tested
>> version.
>>
>> While trying to replicate the code from example(), I am facing an
>> error related with te "index.search" function (line 7 in the example()
>> code).
>> This is the code I am using:
>>
>> example2 <- function (topic, package = NULL, lib.loc = NULL,
>> character.only = FALSE,
>> give.lines = FALSE, local = FALSE, echo = TRUE, verbose =
>> getOption("verbose"),
>> setRNG = FALSE, ask = getOption("example.ask"), prompt.prefix =
>> abbreviate(topic, 6), run.dontrun = FALSE)
>> {
>> if (!character.only) {
>> topic <- substitute(topic)
>> if (!is.character(topic))
>> topic <- deparse(topic)[1L]
>> }
>> pkgpaths <- find.package(package, lib.loc, verbose = verbose)
>> file <- index.search(topic, pkgpaths, TRUE)
>> return(file)
>> }
>>
>> > example2("deMorgan", package="QCA")
>> Error in example2("deMorgan", package = "QCA") :
>>   could not find function "index.search"
>>
>>
>> I've tried an explicit library(utils), with the same result.
>> ?index.search doesn't yield anything better...
>>
>> Could anyone point me in the right direction, please?
>> Thank you,
>> Adrian
>>
>>
>> --
>> Adrian Dusa
>> University of Bucharest
>> Romanian Social Data Archive
>> 1, Schitu Magureanu Bd.
>> 050025 Bucharest sector 5
>> Romania
>> Tel.:+40 21 3126618 \
>> +40 21 3120210 / int.101
>> Fax: +40 21 3158391
>>
>> __
>> R-devel@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>
>
>
> --
> Gabriel Becker
> Graduate Student
> Statistics Department
> University of California, Davis



-- 
Adrian Dusa
University of Bucharest
Romanian Social Data Archive
1, Schitu Magureanu Bd.
050025 Bucharest sector 5
Romania
Tel.:+40 21 3126618 \
+40 21 3120210 / int.101
Fax: +40 21 3158391

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] index.search

2014-06-15 Thread Brian Lee Yung Rowe
Adrian,

You might consider using a unit testing framework such as RUnit or testthat, 
which does this but in a more structured manner. Essentially you codify the 
behavior in a set of tests as opposed to comparing with a previous version.

HTH,
Brian

•••••
Brian Lee Yung Rowe
Founder, Zato Novo
Professor, M.S. Data Analytics, CUNY

> On Jun 15, 2014, at 11:25 PM, "Adrian Dușa"  wrote:
> 
> Hi Gabriel,
> 
> Actually, I am not going to use multiple versions of the same package,
> but always the last version. What I would like to do is:
> - to run all examples from all functions in the package, saving the
> results into a list
> - compare the list to an already saved one (from the previous version
> of the package), possibly using all.equal()
> 
> I tried using the example() function, like this:
> example("deMorgan", package="QCA", give.lines=TRUE)
> 
> That returns the commands from the examples section, but if a command
> is split over multiple rows I cannot use it automatically.
> 
> I could also use:
> capture.output(example("deMorgan", package="QCA", ask=FALSE))
> 
> That would indeed work for the printed output, but I would also like
> to compare the objects saved by the deMorgan() function. If that is
> not possible, I'll probably be happy with the printed output.
> 
> I'd still be curious as to why the index.search() function cannot be
> used... (it seems useful for other purposes).
> 
> Best wishes,
> Adrian
> 
> 
>> On Mon, Jun 16, 2014 at 5:46 AM, Gabriel Becker  wrote:
>> Adrian,
>> 
>> R isn't really designed to use multiple versions of the same package in the
>> same R session. To do what you want you'll need to unload one version of the
>> package before you load the next, which will work some percentage of the
>> time between 50 and 100 ("usually"), but when it can be done it is
>> relatively easy to do.
>> 
>> Packages with C code will give you problems, or at least they used to. I
>> haven't tried recently.  See Prof Ripley's response here: See
>> https://stat.ethz.ch/pipermail/r-devel/2009-February/052229.html
>> 
>> For packages that can be unloaded/reloaded safely, is there a reason you
>> can't just use the existing example function with two different library
>> locations (lib.loc argument) with the two package versions installed?
>> 
>> ~G
>> 
>> 
>>> On Sun, Jun 15, 2014 at 6:22 PM, Adrian Dușa  wrote:
>>> 
>>> Dear r-devel,
>>> 
>>> I am trying to automatically check if two successive versions of a
>>> package have the same results (i.e. code not broken), by parsing the
>>> example sections for each function against a previously tested
>>> version.
>>> 
>>> While trying to replicate the code from example(), I am facing an
>>> error related with te "index.search" function (line 7 in the example()
>>> code).
>>> This is the code I am using:
>>> 
>>> example2 <- function (topic, package = NULL, lib.loc = NULL,
>>> character.only = FALSE,
>>>give.lines = FALSE, local = FALSE, echo = TRUE, verbose =
>>> getOption("verbose"),
>>>setRNG = FALSE, ask = getOption("example.ask"), prompt.prefix =
>>> abbreviate(topic, 6), run.dontrun = FALSE)
>>> {
>>>if (!character.only) {
>>>topic <- substitute(topic)
>>>if (!is.character(topic))
>>>topic <- deparse(topic)[1L]
>>>}
>>>pkgpaths <- find.package(package, lib.loc, verbose = verbose)
>>>file <- index.search(topic, pkgpaths, TRUE)
>>>return(file)
>>> }
>>> 
 example2("deMorgan", package="QCA")
>>> Error in example2("deMorgan", package = "QCA") :
>>>  could not find function "index.search"
>>> 
>>> 
>>> I've tried an explicit library(utils), with the same result.
>>> ?index.search doesn't yield anything better...
>>> 
>>> Could anyone point me in the right direction, please?
>>> Thank you,
>>> Adrian
>>> 
>>> 
>>> --
>>> Adrian Dusa
>>> University of Bucharest
>>> Romanian Social Data Archive
>>> 1, Schitu Magureanu Bd.
>>> 050025 Bucharest sector 5
>>> Romania
>>> Tel.:+40 21 3126618 \
>>>+40 21 3120210 / int.101
>>> Fax: +40 21 3158391
>>> 
>>> __
>>> R-devel@r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>> 
>> 
>> 
>> 
>> --
>> Gabriel Becker
>> Graduate Student
>> Statistics Department
>> University of California, Davis
> 
> 
> 
> -- 
> Adrian Dusa
> University of Bucharest
> Romanian Social Data Archive
> 1, Schitu Magureanu Bd.
> 050025 Bucharest sector 5
> Romania
> Tel.:+40 21 3126618 \
>+40 21 3120210 / int.101
> Fax: +40 21 3158391
> 
> __
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

[[alternative HTML version deleted]]

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] index.search

2014-06-15 Thread Gabriel Becker
On Sun, Jun 15, 2014 at 8:23 PM, Adrian Dușa  wrote:

> Hi Gabriel,
>
> 
> I tried using the example() function, like this:
> example("deMorgan", package="QCA", give.lines=TRUE)
>
> That returns the commands from the examples section, but if a command
>
is split over multiple rows I cannot use it automatically.
>

You can. This is valid R source, so the parser will understand it

expr = parse(text= example("deMorgan", package="QCA", give.lines=TRUE))

You can then evaluate some or all of that expression using either R's own
eval package or, e.g. Hadley Wickham's evaluate package (for your
particular usecase evaluate will be easier I think).





>
> I could also use:
> capture.output(example("deMorgan", package="QCA", ask=FALSE))
>
> That would indeed work for the printed output, but I would also like
> to compare the objects saved by the deMorgan() function. If that is
> not possible, I'll probably be happy with the printed output.
>
> I'd still be curious as to why the index.search() function cannot be
> used... (it seems useful for other purposes).
>


index.search is an unexported function, which means that it is subject to
change in how it behaves without notice or even externally available
reasons. You can get it via :::, but again, it's really not the right tool
here, and not safe to use in general in code you expect to keep working.

HTH,
~G


>
> Best wishes,
> Adrian
>
>
> On Mon, Jun 16, 2014 at 5:46 AM, Gabriel Becker 
> wrote:
> > Adrian,
> >
> > R isn't really designed to use multiple versions of the same package in
> the
> > same R session. To do what you want you'll need to unload one version of
> the
> > package before you load the next, which will work some percentage of the
> > time between 50 and 100 ("usually"), but when it can be done it is
> > relatively easy to do.
> >
> >  Packages with C code will give you problems, or at least they used to. I
> > haven't tried recently.  See Prof Ripley's response here: See
> > https://stat.ethz.ch/pipermail/r-devel/2009-February/052229.html
> >
> > For packages that can be unloaded/reloaded safely, is there a reason you
> > can't just use the existing example function with two different library
> > locations (lib.loc argument) with the two package versions installed?
> >
> > ~G
> >
> >
> > On Sun, Jun 15, 2014 at 6:22 PM, Adrian Dușa 
> wrote:
> >>
> >> Dear r-devel,
> >>
> >> I am trying to automatically check if two successive versions of a
> >> package have the same results (i.e. code not broken), by parsing the
> >> example sections for each function against a previously tested
> >> version.
> >>
> >> While trying to replicate the code from example(), I am facing an
> >> error related with te "index.search" function (line 7 in the example()
> >> code).
> >> This is the code I am using:
> >>
> >> example2 <- function (topic, package = NULL, lib.loc = NULL,
> >> character.only = FALSE,
> >> give.lines = FALSE, local = FALSE, echo = TRUE, verbose =
> >> getOption("verbose"),
> >> setRNG = FALSE, ask = getOption("example.ask"), prompt.prefix =
> >> abbreviate(topic, 6), run.dontrun = FALSE)
> >> {
> >> if (!character.only) {
> >> topic <- substitute(topic)
> >> if (!is.character(topic))
> >> topic <- deparse(topic)[1L]
> >> }
> >> pkgpaths <- find.package(package, lib.loc, verbose = verbose)
> >> file <- index.search(topic, pkgpaths, TRUE)
> >> return(file)
> >> }
> >>
> >> > example2("deMorgan", package="QCA")
> >> Error in example2("deMorgan", package = "QCA") :
> >>   could not find function "index.search"
> >>
> >>
> >> I've tried an explicit library(utils), with the same result.
> >> ?index.search doesn't yield anything better...
> >>
> >> Could anyone point me in the right direction, please?
> >> Thank you,
> >> Adrian
> >>
> >>
> >> --
> >> Adrian Dusa
> >> University of Bucharest
> >> Romanian Social Data Archive
> >> 1, Schitu Magureanu Bd.
> >> 050025 Bucharest sector 5
> >> Romania
> >> Tel.:+40 21 3126618 \
> >> +40 21 3120210 / int.101
> >> Fax: +40 21 3158391
> >>
> >> __
> >> R-devel@r-project.org mailing list
> >> https://stat.ethz.ch/mailman/listinfo/r-devel
> >
> >
> >
> >
> > --
> > Gabriel Becker
> > Graduate Student
> > Statistics Department
> > University of California, Davis
>
>
>
> --
> Adrian Dusa
> University of Bucharest
> Romanian Social Data Archive
> 1, Schitu Magureanu Bd.
> 050025 Bucharest sector 5
> Romania
> Tel.:+40 21 3126618 \
> +40 21 3120210 / int.101
> Fax: +40 21 3158391
>



-- 
Gabriel Becker
Graduate Student
Statistics Department
University of California, Davis

[[alternative HTML version deleted]]

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] index.search

2014-06-15 Thread Adrian Dușa
On Mon, Jun 16, 2014 at 6:36 AM, Brian Lee Yung Rowe  wrote:
> Adrian,
>
> You might consider using a unit testing framework such as RUnit or testthat,
> which does this but in a more structured manner. Essentially you codify the
> behavior in a set of tests as opposed to comparing with a previous version.

Right... I knew there was a better way to handle this.
Will take a look on those and try to build something on them.

Best,
Adrian

-- 
Adrian Dusa
University of Bucharest
Romanian Social Data Archive
1, Schitu Magureanu Bd.
050025 Bucharest sector 5
Romania
Tel.:+40 21 3126618 \
+40 21 3120210 / int.101
Fax: +40 21 3158391

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] index.search

2014-06-15 Thread Adrian Dușa
On Mon, Jun 16, 2014 at 6:37 AM, Gabriel Becker  wrote:
> [...]
> You can. This is valid R source, so the parser will understand it
>
> expr = parse(text= example("deMorgan", package="QCA", give.lines=TRUE))
>
> You can then evaluate some or all of that expression using either R's own
> eval package or, e.g. Hadley Wickham's evaluate package (for your particular
> usecase evaluate will be easier I think).

Oh, I see...! In that case I can use it, of course.
Did install the evaluate package, although one would expect some
better documentation (no examples at all, especially at the main
evaluate function).


>> [...]
> index.search is an unexported function, which means that it is subject to
> change in how it behaves without notice or even externally available
> reasons. You can get it via :::, but again, it's really not the right tool
> here, and not safe to use in general in code you expect to keep working.

Yes, I figured that much.
Of course it's not meant to be used in any decently working code, but
I learn heavily by simply looking at these sort of (hidden) R
functions.

Thanks again,
Adrian

-- 
Adrian Dusa
University of Bucharest
Romanian Social Data Archive
1, Schitu Magureanu Bd.
050025 Bucharest sector 5
Romania
Tel.:+40 21 3126618 \
+40 21 3120210 / int.101
Fax: +40 21 3158391

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] index.search

2014-06-16 Thread Martin Maechler
> Adrian Dușa 
> on Mon, 16 Jun 2014 08:33:59 +0300 writes:

> On Mon, Jun 16, 2014 at 6:37 AM, Gabriel Becker
>  wrote:
>> [...]  You can. This is valid R source, so the parser
>> will understand it
>> 
>> expr = parse(text= example("deMorgan", package="QCA",
>> give.lines=TRUE))
>> 
>> You can then evaluate some or all of that expression
>> using either R's own eval package or, e.g. Hadley
>> Wickham's evaluate package (for your particular usecase
>> evaluate will be easier I think).

> Oh, I see...! In that case I can use it, of course.  Did
> install the evaluate package, although one would expect
> some better documentation (no examples at all, especially
> at the main evaluate function).


>>> [...]
>> index.search is an unexported function, which means that
>> it is subject to change in how it behaves without notice
>> or even externally available reasons. You can get it via
>> :::, but again, it's really not the right tool here, and
>> not safe to use in general in code you expect to keep
>> working.

> Yes, I figured that much.  Of course it's not meant to be
> used in any decently working code, but I learn heavily by
> simply looking at these sort of (hidden) R functions.

> Thanks again, Adrian

Apropos "not the right tool".  I'm a bit astonished that nobody
mentioned the fact R already provides "the tool" to
automatically compare all example outputs with a previous
version (of the packages example outputs):

*THE* manual (every package writer should know about,
 re-read/browse about once a year, and search in for such questions):

"Writing R Extensions", section Package subdirectories

(e.g. on the CRAN master in Vienna,
 http://cran.r-project.org/doc/manuals/R-exts.html#Package-subdirectories )
says

|If directory 'tests' has a subdirectory 'Examples' containing a file
|'PKG-Ex.Rout.save', this is compared to the output file for running the
|examples when the latter are checked. 

So: After an 'R CMD check ' you only need to take and
keep the  -Ex.Rout  file that is produced (in the
PKG.Rcheck/ directory), and save it into /tests/-Ex.Rout.save
and from then on, every time you run R CMD check   the
comparison will be made. 

Martin Maechler, ETH Zurich

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] index.search

2014-06-16 Thread Adrian Dușa
Oh my... this is so simple, why didn't I think of that...?
Thanks a lot Martin, beautiful,
Adrian


On Mon, Jun 16, 2014 at 10:32 AM, Martin Maechler
 wrote:
>> Adrian Duºa 
>> on Mon, 16 Jun 2014 08:33:59 +0300 writes:
>
> > On Mon, Jun 16, 2014 at 6:37 AM, Gabriel Becker
> >  wrote:
> >> [...]  You can. This is valid R source, so the parser
> >> will understand it
> >>
> >> expr = parse(text= example("deMorgan", package="QCA",
> >> give.lines=TRUE))
> >>
> >> You can then evaluate some or all of that expression
> >> using either R's own eval package or, e.g. Hadley
> >> Wickham's evaluate package (for your particular usecase
> >> evaluate will be easier I think).
>
> > Oh, I see...! In that case I can use it, of course.  Did
> > install the evaluate package, although one would expect
> > some better documentation (no examples at all, especially
> > at the main evaluate function).
>
>
> >>> [...]
> >> index.search is an unexported function, which means that
> >> it is subject to change in how it behaves without notice
> >> or even externally available reasons. You can get it via
> >> :::, but again, it's really not the right tool here, and
> >> not safe to use in general in code you expect to keep
> >> working.
>
> > Yes, I figured that much.  Of course it's not meant to be
> > used in any decently working code, but I learn heavily by
> > simply looking at these sort of (hidden) R functions.
>
> > Thanks again, Adrian
>
> Apropos "not the right tool".  I'm a bit astonished that nobody
> mentioned the fact R already provides "the tool" to
> automatically compare all example outputs with a previous
> version (of the packages example outputs):
>
> *THE* manual (every package writer should know about,
>  re-read/browse about once a year, and search in for such questions):
>
> "Writing R Extensions", section Package subdirectories
> 
> (e.g. on the CRAN master in Vienna,
>  http://cran.r-project.org/doc/manuals/R-exts.html#Package-subdirectories )
> says
>
> |If directory 'tests' has a subdirectory 'Examples' containing a file
> |'PKG-Ex.Rout.save', this is compared to the output file for running the
> |examples when the latter are checked.
>
> So: After an 'R CMD check ' you only need to take and
> keep the  -Ex.Rout  file that is produced (in the
> PKG.Rcheck/ directory), and save it into /tests/-Ex.Rout.save
> and from then on, every time you run R CMD check   the
> comparison will be made.
>
> Martin Maechler, ETH Zurich



-- 
Adrian Dusa
University of Bucharest
Romanian Social Data Archive
1, Schitu Magureanu Bd.
050025 Bucharest sector 5
Romania
Tel.:+40 21 3126618 \
+40 21 3120210 / int.101
Fax: +40 21 3158391

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] index.search

2014-06-16 Thread Brian Lee Yung Rowe
Thanks for the great insight. I love that there's always something else to 
learn in R. 

•••••
Brian Lee Yung Rowe
Founder, Zato Novo
Professor, M.S. Data Analytics, CUNY

On Jun 16, 2014, at 3:34 AM, Martin Maechler  wrote:

>> Adrian Dușa 
>>on Mon, 16 Jun 2014 08:33:59 +0300 writes:
> 
>> On Mon, Jun 16, 2014 at 6:37 AM, Gabriel Becker
>>  wrote:
>>> [...]  You can. This is valid R source, so the parser
>>> will understand it
>>> 
>>> expr = parse(text= example("deMorgan", package="QCA",
>>> give.lines=TRUE))
>>> 
>>> You can then evaluate some or all of that expression
>>> using either R's own eval package or, e.g. Hadley
>>> Wickham's evaluate package (for your particular usecase
>>> evaluate will be easier I think).
> 
>> Oh, I see...! In that case I can use it, of course.  Did
>> install the evaluate package, although one would expect
>> some better documentation (no examples at all, especially
>> at the main evaluate function).
> 
> 
 [...]
>>> index.search is an unexported function, which means that
>>> it is subject to change in how it behaves without notice
>>> or even externally available reasons. You can get it via
>>> :::, but again, it's really not the right tool here, and
>>> not safe to use in general in code you expect to keep
>>> working.
> 
>> Yes, I figured that much.  Of course it's not meant to be
>> used in any decently working code, but I learn heavily by
>> simply looking at these sort of (hidden) R functions.
> 
>> Thanks again, Adrian
> 
> Apropos "not the right tool".  I'm a bit astonished that nobody
> mentioned the fact R already provides "the tool" to
> automatically compare all example outputs with a previous
> version (of the packages example outputs):
> 
> *THE* manual (every package writer should know about,
> re-read/browse about once a year, and search in for such questions):
> 
> "Writing R Extensions", section Package subdirectories
> 
> (e.g. on the CRAN master in Vienna,
> http://cran.r-project.org/doc/manuals/R-exts.html#Package-subdirectories )
> says
> 
> |If directory 'tests' has a subdirectory 'Examples' containing a file
> |'PKG-Ex.Rout.save', this is compared to the output file for running the
> |examples when the latter are checked. 
> 
> So: After an 'R CMD check ' you only need to take and
> keep the  -Ex.Rout  file that is produced (in the
> PKG.Rcheck/ directory), and save it into /tests/-Ex.Rout.save
> and from then on, every time you run R CMD check   the
> comparison will be made. 
> 
> Martin Maechler, ETH Zurich
> 
> __
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

[[alternative HTML version deleted]]

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] index.search

2014-06-16 Thread Duncan Murdoch

On 16/06/2014 3:32 AM, Martin Maechler wrote:

> Adrian Dușa 
> on Mon, 16 Jun 2014 08:33:59 +0300 writes:

 > On Mon, Jun 16, 2014 at 6:37 AM, Gabriel Becker
 >  wrote:
 >> [...]  You can. This is valid R source, so the parser
 >> will understand it
 >>
 >> expr = parse(text= example("deMorgan", package="QCA",
 >> give.lines=TRUE))
 >>
 >> You can then evaluate some or all of that expression
 >> using either R's own eval package or, e.g. Hadley
 >> Wickham's evaluate package (for your particular usecase
 >> evaluate will be easier I think).

 > Oh, I see...! In that case I can use it, of course.  Did
 > install the evaluate package, although one would expect
 > some better documentation (no examples at all, especially
 > at the main evaluate function).


 >>> [...]
 >> index.search is an unexported function, which means that
 >> it is subject to change in how it behaves without notice
 >> or even externally available reasons. You can get it via
 >> :::, but again, it's really not the right tool here, and
 >> not safe to use in general in code you expect to keep
 >> working.

 > Yes, I figured that much.  Of course it's not meant to be
 > used in any decently working code, but I learn heavily by
 > simply looking at these sort of (hidden) R functions.

 > Thanks again, Adrian

Apropos "not the right tool".  I'm a bit astonished that nobody
mentioned the fact R already provides "the tool" to
automatically compare all example outputs with a previous
version (of the packages example outputs):

*THE* manual (every package writer should know about,
  re-read/browse about once a year, and search in for such questions):

"Writing R Extensions", section Package subdirectories

(e.g. on the CRAN master in Vienna,
  http://cran.r-project.org/doc/manuals/R-exts.html#Package-subdirectories )
says

|If directory 'tests' has a subdirectory 'Examples' containing a file
|'PKG-Ex.Rout.save', this is compared to the output file for running the
|examples when the latter are checked.

So: After an 'R CMD check ' you only need to take and
keep the  -Ex.Rout  file that is produced (in the
PKG.Rcheck/ directory), and save it into /tests/-Ex.Rout.save
and from then on, every time you run R CMD check   the
comparison will be made.


It's also worth mentioning that there is something similar to test for 
changes to vignettes:


If there is a target output file .Rout.save in the vignette source 
directory, the output from running the code in that vignette is 
compared with the target output file and any differences are reported 
(but not recorded in the log file). 


The slightly surprising thing is that R CMD check doesn't produce 
.Rout; the file that is compared to .Rout.save is 
.log.


Duncan Murdoch

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] index.search

2014-06-16 Thread Adrian Dușa
On Mon, Jun 16, 2014 at 10:32 AM, Martin Maechler
 wrote:
> [...]
>
> Apropos "not the right tool".  I'm a bit astonished that nobody
> mentioned the fact R already provides "the tool" to
> automatically compare all example outputs with a previous
> version (of the packages example outputs):

As appealing as this is, while trying to figure out a solution of my
own (until Martin's email), I think I've succeeded in creating a
rather useful function which allows fine grained control over each and
every line of code in the examples sections:

#
helpfiles <- c(
"allExpressions",
"calibrate",
"createMatrix",
"deMorgan",
"demoChart",
"eqmcc",
"factorize",
"findSubsets",
"findSupersets",
"findTh",
"getRow",
"pof",
"solveChart",
"superSubset",
"truthTable"
)

testQCAmaybe <- function() {
results <- vector(mode="list", length=length(helpfiles))
names(results) <- helpfiles

for (i in seq(length(helpfiles))) {
Rdfile <- file.path(find.package("QCA"), paste(helpfiles[i],
".Rd", sep=""))
commands <- parse(text=capture.output(tools::Rd2ex(Rdfile)))

results[[i]] <- vector(mode="list", length=length(commands))
names(results[[i]]) <- commands
for (j in seq(length(commands))) {
results[[i]][[j]] <-
suppressWarnings(capture.output(eval(commands[j])))
}
}
return(results)
}
#

Using all.equal(), over the entire list or sequentially over parts of
it quickly identifies sources of difference.

I hope this helps anyone,
Adrian


-- 
Adrian Dusa
University of Bucharest
Romanian Social Data Archive
1, Schitu Magureanu Bd.
050025 Bucharest sector 5
Romania
Tel.:+40 21 3126618 \
+40 21 3120210 / int.101
Fax: +40 21 3158391

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel