Hi,

things have indeed changed on how non-Sweave vignettes are built (this
happened around R devel 2013-03-05 r62130).  However, it's not clear
to me what changes would be behind your problems, if any.

Build your vignette with the following buildVignette(), which emulates
what R does when it builds vignettes (cf. tools::buildVignettes()).
As you'll see, it reproduces your error:

if (!exists("buildVignette", mode="function")) {
  
source("http://r-forge.r-project.org/scm/viewvc.php/*checkout*/pkg/R.rsp/R/buildVignette.R?root=r-dots";);
}

EXAMPLE (in a fresh R session):

url <- 
"http://r-forge.r-project.org/scm/viewvc.php/*checkout*/pkg/BayesFactorPCL/vignettes/manual.Rmd?root=bayesfactorpcl";
if (!file.exists("manual.Rmd")) download.file(url, "manual.Rmd");

output <- buildVignette("manual.Rmd", buildPkg="knitr");
browseURL(output);

bfr <- readLines(output);
idxs <- grep("which.max(bf)", bfr, fixed=TRUE);
idxs <- sort(sapply(idxs, FUN=function(idx) idx+(-5:5)));
cat(sprintf("%03d: %s\n", idxs, bfr[idxs]));

> cat(sprintf("%03d: %s", idxs, bfr[idxs]), sep="\n")
2517: </code></pre>
2518:
2519: <pre><code>## [1] TRUE
2520: </code></pre>
2521:
2522: <pre><code class="r">BayesFactor::which.max(bf)
2523: </code></pre>
2524:
2525: <pre><code>## complaints
2526: ##          1
2527: </code></pre>
2531:
2532: <pre><code>## critical + advance
2533: ##                 21
2534: </code></pre>
2535:
2536: <pre><code class="r">which.max(bf)
2537: </code></pre>
2538:
2539: <pre><code>## Error: no method for coercing this S4 class to a vector
2540: </code></pre>
2541:

So, have a look at browseVignette() and how it calls the 'knitr' weave
function.  That should help you narrow down what's going on.

> sessionInfo()
R version 3.0.0 RC (2013-03-31 r62463)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252

attached base packages:
[1] tools     stats     graphics  grDevices utils     datasets  methods
[8] base

other attached packages:
[1] BayesFactor_0.9.3 markdown_0.5.4    coda_0.16-1       lattice_0.20-15
[5] knitr_1.1.7

loaded via a namespace (and not attached):
[1] digest_0.6.3     evaluate_0.4.3   formatR_0.7      grid_3.0.0
[5] mvtnorm_0.9-9994 pbapply_1.0-5    stringr_0.6.2

Hope this helps

/Henrik

On Mon, Apr 1, 2013 at 4:52 PM, Richard D. Morey <r.d.mo...@rug.nl> wrote:
> A new problem has cropped up with compiling vignettes for my package 
> BayesFactor. I'm not sure when it started, but I can tell you it didn't occur 
> on R 2.15.3, and it does on 3.0.0 RC (2013-03-31 r62463) (session info is at 
> the bottom of this message).
>
> I have defined methods for which.min and which.max for a class (I've defined 
> both S3 and S4 methods for the class "BFBayesFactor") in my package. I've 
> exported the S4 class using exportMethods, and declared the S3 method with 
> S3method. You can see the NAMESPACE file here:
>
> https://r-forge.r-project.org/scm/viewvc.php/pkg/BayesFactorPCL/NAMESPACE?view=markup&root=bayesfactorpcl
>
> and the methods here:
>
> https://r-forge.r-project.org/scm/viewvc.php/pkg/BayesFactorPCL/R/methods-BFBayesFactor.R?view=markup&root=bayesfactorpcl
>
> I have code in a vignette that calls the which.max method on a BFBayesFactor 
> object. However, when that happens as the vignette is being compiled, I get 
> an error:
>
> which.max(bf)
> ## Error: no method for coercing this S4 class to a vector
>
>
>
> This also occurs with which.min, but oddly not any other method (including 
> the is.na method, which is declared exactly the same way, as far as I can 
> tell). This seems to imply that the which.min and which.max methods are not 
> exported.
>
> When I use double colon notation - which as I understand, only works with 
> exported functions - it works (see below).
>
> When I compile the Rmd file manually, I do not see this problem; I get no 
> errors. This seems to be a problem unique to compiling the vignette. I've 
> tried it in Rstudio, R from the command line, and using Rscript and calling 
> knitr directly. It only occurs when building a vignette for the source 
> package.
>
> Steps to reproduce:
> 1. Check out latest version of BayesFactor package from R-forge 
> (https://r-forge.r-project.org/scm/?group_id=554) (revision 320)
>
> 2. Create a source package (which compiles the vignette)
>
> 3. Open tar to see compiled vignette HTML (doc/manual.html - or, 
> alternatively, see https://www.dropbox.com/s/6csznytp8i1akjl/manual.html). 
> Search for second occurrence of "which.max", and see the following lines:
>
> ## which model index is the best?
> is(bf, "BFBayesFactor")
> ## [1] TRUE
> BayesFactor::which.max(bf)
> ## complaints
> ## 1
> BayesFactor::which.min(bf)
> ## critical + advance
> ## 21
> which.max(bf)
> ## Error: no method for coercing this S4 class to a vector
> which.min(bf)
> ## Error: no method for coercing this S4 class to a vector
>
>
>
> I've been pulling my hair out on this, especially because something seems to 
> have changed over the past few weeks that caused this, but I didn't catch 
> exactly when, and I don't know if the issue lies with R 3.0.0 or my package.
>
>> sessionInfo()
> R version 3.0.0 RC (2013-03-31 r62463)
> Platform: x86_64-apple-darwin10.8.0 (64-bit)
> locale:
> [1] en_AU.UTF-8/en_AU.UTF-8/en_AU.UTF-8/C/en_AU.UTF-8/en_AU.UTF-8
> attached base packages:
> [1] stats graphics grDevices utils datasets methods base
> other attached packages:
> [1] BayesFactor_0.9.5 markdown_0.5.4 knitr_1.1.6 coda_0.16-1 lattice_0.20-15
> loaded via a namespace (and not attached):
> [1] digest_0.6.3 evaluate_0.4.3 formatR_0.7 grid_3.0.0 mvtnorm_0.9-9994
> [6] pbapply_1.0-5 stringr_0.6.2 tools_3.0.0
>
>
>
>
> Any help would be greatly appreciated,
> Richard
>
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

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

Reply via email to