От написания расширений R сильный>а>
Для проверки циклических объявлений в файлах DESCRIPTION требуется набор репозиториев (включая CRAN): сделайте это в ~/.Rprofile, например,
options(repos = c(CRAN="http://cran.r-project.org"))
Рекомендуется
Пользователь должен дважды проверить, находится ли его .Rprofile у него дома и содержит ли он указанную опцию.
# in R session (any platform)
# where is my profile?
file.path(Sys.glob("~"),".Rprofile")
# is it there?
file.exists(file.path(Sys.glob("~"),".Rprofile"))
Или из сеанса R с использованием дополнительного пакета:
library(pathological)
r_profile()
Пользователь должен дважды проверить, не вложена ли запись опции в условие IF, как в следующем коде:
# this will not help for R CMD check --as-cran
if(interactive()) {
options(repos = c(CRAN="http://cran.r-project.org"))
}
Пробный запуск для любой платформы
Вот скрипт R, который готовит простой временный пакет R для тестирования, помогая быстрее найти, что не так в вашем локальном использовании. Этот подход помог мне определить, что не так в моем файле .Rprofile, и, как правило, может помочь настроить рабочее начальное состояние. В лучшем случае проверка должна показать только 1 ПРИМЕЧАНИЕ о новой отправке.
- сначала скопируйте/вставьте код и введите его в свой сеанс R (предпочтительно --vanilla)
- затем запустите команду, напечатанную сценарием, чтобы проверить тестовый пример --as-cran.
Пример
# 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
Если ваш .Rprofile не существует, он будет создан, и в любом случае в конец файла будет помещена одна новая строка.
Скрипт 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)
Проверка пакета
# replace package-path by the path adviced by the sourcing the script above
R --no-site-file CMD check --as-cran package-path
Существует профиль пользователя и профиль сайта, в приведенном выше подходе вы обходите профиль сайта (на втором шаге), используя параметр --no-site-file
для параметра каркаса пакета.
Ошибки PDF
Вы можете столкнуться с ошибками, связанными с PDF и латексом, которые, скорее всего, вызваны отсутствием или неполной установкой латекса. Вы можете использовать опцию --no-manual
, чтобы пропустить тесты PDF.
R --no-site-file CMD check --no-manual --as-cran /tmp/pkgtest
person
Petr Matousu
schedule
30.07.2014
Sys.getenv("R_USER")
- person Dason   schedule 19.04.2014options
вrepos
. Это избавляет от ПРИМЕЧАНИЕ. Можете ли вы бросить это как ответ? Есть ли способ установитьrepos
без необходимости помещать .Rprofile в мой домашний каталог, то есть установить что-то в каталоге пакета, который установитrepos
? - person Tyler Rinker   schedule 19.04.2014repos
была бы неплохой. - person sgibb   schedule 24.04.2014repos
с параметрами в мой .Rprofile не исправляет это для меня (при проверке с помощью devtools::check())... - person cboettig   schedule 12.07.2014file.create(".Rprofile")
вSys.getenv("R_USER")
этой директории и добавил в него строкуcat("options(repos = c(CRAN=\"http://cran.r-project.org\"))", file = ".Rprofile")
но это не решило проблему. - person Marcin Kosiński   schedule 17.09.2014.Rprofile
. Добавьте строкуoptions(repos = c(CRAN=\"http://cran.r-project.org\")
. Запустите проверки. - person Tyler Rinker   schedule 31.10.2014options(repos = c(CRAN="http://cran.r-project.org"))
- person Tyler Rinker   schedule 11.09.2015