From Writing R Extensions
La prova delle dichiarazioni ciclici nel file di descrizione ha bisogno di repository (compresi CRAN) set: farlo in ~/.Rprofile, per esempio
options(repos = c(CRAN="http://cran.r-project.org"))
consigliato
utente dovrebbe ricontrollare se il suo profilo .Rprile è nella sua casa e che contiene l'opzione menzionata.
# in R session (any platform)
# where is my profile?
file.path(Sys.glob("~"),".Rprofile")
# is it there?
file.exists(file.path(Sys.glob("~"),".Rprofile"))
O dalla sessione di R utilizzando il pacchetto aggiuntivo:
library(pathological)
r_profile()
utente dovrebbe poi controllare se la voce opzione non è annidato nella condizione se, come nel codice seguente:
# this will not help for R CMD check --as-cran
if(interactive()) {
options(repos = c(CRAN="http://cran.r-project.org"))
}
Corsa a secco per qualsiasi piattaforma
Ecco lo script R che prepara il caso temporaneo facile del pacchetto R per il test, aiutando a trovare più rapidamente ciò che sta andando storto nell'utilizzo locale. Questo approccio mi ha aiutato a individuare ciò che era sbagliato nel mio file .Rprofile e in generale può aiutare a impostare lo stato iniziale di lavoro. Nel migliore dei casi, l'esecuzione del controllo dovrebbe mostrare solo 1 NOTA sulla nuova presentazione.
- prima copia/incolla il codice e la fonte è nella sessione R (--vanilla preferibilmente)
- quindi eseguire il comando stampata dallo script per controllare banco di prova -come-cran.
Esempio
# for example
R --vanilla -f makePackage.R
# here the resulting package path is as below
R --no-site-file CMD check --as-cran /tmp/pkgtest
# now see the check log
Se il .Rprofile non esiste verrà creato e una nuova linea di posto alla fine del file in ogni caso.
Lo script makePackage.R
# makePackage.R
# makes simple package for playing with check --as-cran
# copy this content to file makePackage.R
# then source it into your R --vanilla session
name <- "pkgtest"
#
# prepare and adjust package template
#
tempbase <- dirname(tempdir())
e <- new.env()
path <- dirname(tempdir())
# make simple package in path
e$fu <- function(){"Hello"}
package.skeleton(name=name,force=T,path=path,environment=e)
nil <- file.remove(
file.path(path,name,'Read-and-delete-me'),
file.path(path,name,'man',paste0(name,'-package.Rd'))
)
# adjust DESCRIPTION
D <- readLines(file.path(path,name,"DESCRIPTION"))
D[grepl("^Title: ",D)] <- "Title: Testing Skeleton"
D[grepl("^Author: ",D)] <- "Author: John Doe"
D[grepl("^Description: ",D)] <- "Description: Checking --as-cran check."
D[grepl("^Maintainer: ",D)] <- "Maintainer: John Doe <[email protected]>"
D[grepl("^License: ",D)] <- "License: GPL (>= 2)"
write(D,file.path(path,name,"DESCRIPTION"))
# make fu.Rd
write(
"\\name{fu}\\alias{fu}\\title{Prints}\\description{Prints}
\\usage{fu()}\\examples{fu()}",
file.path(path,name,'man','fu.Rd'))
#
# ensure that .Rprofile contains repos option
# add fresh new line et the end of .Rprofile
#
userRp <- file.path(Sys.glob("~"),".Rprofile")
write("options(repos = c(CRAN='http://cran.r-project.org'))",file=userRp, append=TRUE)
#
# print final message
#
msg <- sprintf("
Your test package was created in %s,
under name %s,
your user .Rprofile in %s was modified (option repos),
now check this test package from command line by command:
R --no-site-file CMD check --as-cran %s
", path, name, userRp, file.path(path,name)
)
# now is time to check the skeleton
message(msg)
Controllare il pacchetto
# replace package-path by the path adviced by the sourcing the script above
R --no-site-file CMD check --as-cran package-path
C'è profilo utente e profilo del sito, l'approccio di cui sopra si aggira profilo del sito (in seconda fase) utilizzando l'opzione --no-site-file
per l'opzione scheletro del pacchetto.
errori PDF
Si può sperimentare PDF e errori correlati lattice, causato molto probabilmente da mancante o non instalation lattice completa. Ycan usa l'opzione --no-manual
per saltare i test PDF.
R --no-site-file CMD check --no-manual --as-cran /tmp/pkgtest
Si dice di avere un profilo .Rr nella directory radice del pacchetto - si sta impostando l'opzione di repository dal file .Rprofile nella propria directory home? È possibile controllare quale sia eseguendo 'Sys.getenv (" R_USER ")' – Dason
@Dason Ho lanciato un profilo .Rr nella mia directory home con l'opzione 'options' a' repos'. Questo si sbarazza della NOTA. Puoi buttarlo giù come risposta? C'è un modo per impostare il 'repos' senza dover inserire un .Rprofile nella mia directory home, che è impostato qualcosa all'interno della directory del pacchetto che imposterà il' repos'? –
Una variabile di ambiente per 'repos' sarebbe carina. – sgibb