我同样可以提出这个问题,"这对CRAN来说是否足够好?"
我有一系列我为特定任务建立的功能.其中一些是便利功能:
# Returns odds/evens from a vector
odds=function(vec) {
stopifnot(class(vec)=="integer")
ret = vec[fpart(vec/2)!=0]
ret
}
evens=function(vec) {
stopifnot(class(vec)=="integer")
ret = vec[fpart(vec/2)==0]
ret
}
Run Code Online (Sandbox Code Playgroud)
有些是次要的补充,已经证明在回答常见的SO问题时非常有用:
# Shift a vector over by n spots
# wrap adds the entry at the beginning to the end
# pad does nothing unless wrap is false, in which case it specifies whether to pad with NAs
shift <- function(vec,n=1,wrap=TRUE,pad=FALSE) {
if(length(vec)<abs(n)) {
#stop("Length of vector must be greater than the magnitude of n \n") …Run Code Online (Sandbox Code Playgroud) 有没有办法/地方我可以得到简单的指标
我最近在CRAN上发布了自己的软件包,我想稍微监控一下.
我刚刚向 CRAN 提交了一个 R 包。我收到了这条评论:
If there are references describing the methods in your package, please add these in the description field of your DESCRIPTION file in the form
authors (year) <doi:...>
authors (year) <arXiv:...>
authors (year, ISBN:...)
or if those are not available: <https:...>
with no space after 'doi:', 'arXiv:', 'https:' and angle brackets for auto-linking.
(If you want to add a title as well please put it in quotes: "Title")
Run Code Online (Sandbox Code Playgroud)
但我认为该description字段仅限于一个段落,这意味着除了该字段中的单个段落之外,您不能包含其他文本。所以我不确定在描述字段中包含引用的确切格式是什么。我的猜测如下,但此格式返回一条注释,指出描述格式错误。
Description: Text describing the package, …Run Code Online (Sandbox Code Playgroud) 以下R命令将安装所有CRAN包:
availablePackages <- available.packages()[,1]
install.packages(availablePackages)
Run Code Online (Sandbox Code Playgroud)
以下命令将列出所有已安装的软件包:
installedPackages <- .packages(all.available = TRUE)
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何指示R安装尚未安装的所有CRAN软件包?
我管理了Depends,建议和导入描述文件.最后我提交了我的包裹CRAN.但是在安装包装时,它只安装存放在包装下CRAN的bioconductor包装.此外,它还具有Mac OS的程序包依赖性错误:
检查Mac OS的日志
可能是什么问题呢?我怎么能修好它?
亲切的问候,
我有一堆测试,我不希望它们在CRAN检查或Travis CI构建期间运行.它们要么长时间运行,要么可能导致写入网络数据库的事务/并发冲突.将它们分开的方法(来自R CMD检查测试)最适合测试吗?
我应该将这些测试放在单独的文件夹中吗?我应该标记他们的文件名并使用正则表达式吗?(例如,在test_package中使用filter参数跳过 @Jeroen的测试)
http://cran.r-project.org/web/packages/policies.html:
可以选择长时间运行的测试和插图代码进行检查,但确保剩下的检查确实可以执行包的所有功能.
为了庆祝r标签中的第 100,000个问题,我想创建一个CRAN上所有包作者名称的列表.
最初,我认为我可以使用,available.packages()但遗憾的是,这不包含作者的专栏.
pdb <- available.packages()
colnames(pdb)
[1] "Package" "Version" "Priority"
[4] "Depends" "Imports" "LinkingTo"
[7] "Suggests" "Enhances" "License"
[10] "License_is_FOSS" "License_restricts_use" "OS_type"
[13] "Archs" "MD5sum" "NeedsCompilation"
[16] "File" "Repository"
Run Code Online (Sandbox Code Playgroud)
DESCRIPTION每个包的文件中都提供了此信息.所以我可以想到两种蛮力方式,两者都不是很优雅:
下载每个6,878个软件包并DESCRIPTION使用读取文件base::read.dcf()
刮掉CRAN上的每个包页面.例如,https://cran.r-project.org/web/packages/MASS/index.html告诉我Brian Ripley是MASS的作者.
我不想下载所有CRAN来回答这个问题.而且我也不想刮HTML,因为DESCRIPTION文件中的信息是一个整齐格式的person对象列表(请参阅参考资料?person).
如何使用CRAN上的信息轻松构建包作者列表?
在对CRAN包提交进行最终检查时,会出现以下注释:
* checking top-level files ... NOTE
Files ‘README.md’ or ‘NEWS.md’ cannot be checked without ‘pandoc’ being installed.
Run Code Online (Sandbox Code Playgroud)
但是,pandoc肯定是安装的,因为我经常使用它,这个包经常在文档中使用它pkgdown.
> rmarkdown::pandoc_available()
[1] TRUE
> rmarkdown::pandoc_version()
[1] ‘1.19.2.1’
Run Code Online (Sandbox Code Playgroud)
我想避免从源代码安装pandoc,因为最新版本的pandoc取代了与其他R软件包一起安装的版本并导致奇怪的输出.
几年前有一个类似的问题,但解决方案是:
installr包安装pandoc ,而我已经安装了pandoc; 和,仅在使用devtools::release()和使用时检查此注释devtools::check(check_version = TRUE),否则通过时不会发出警告或注释.
Pandoc的RStudio安装:
Sys.getenv('RSTUDIO_PANDOC')
[1] "/Applications/RStudio.app/Contents/MacOS/pandoc"
Run Code Online (Sandbox Code Playgroud)
我以前导出到〜/ .bash_profile:
export PATH="$PATH:/Applications/Rstudio.app/Contents/MacOS/pandoc"
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13.2
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
locale: …Run Code Online (Sandbox Code Playgroud) 当我在本地对我的包运行 devtools::check 时,我没有收到此错误,但是当我将我的包提交到 CRAN 或运行 devtools::check_win_devel 时,我收到此错误:
'LazyData' 没有指定 'data' 目录
大约一周前,我成功地将我的包提交给了 CRAN,但没有收到此错误,我更改的只是描述文件。
tl;dr我想devtools::test()在一个包上运行并让它跳过测试等,就像它在 CRAN 上运行一样,但我不知道如何操作。
据我了解,testthat::skip_on_cran()检查环境变量NOT_CRAN,如果测试未在CRAN 上运行,则应将其设置为“true”值(为了支持这一点,底层测试函数testthat:::on_cran()等于
!identical(Sys.getenv("NOT_CRAN"), "true")
Run Code Online (Sandbox Code Playgroud)
我试图用来skip_on_cran()跳过一些测试。我想确认CRAN 上实际上会跳过这些测试。我有一条线
cat("ON CRAN:", testthat:::on_cran(), "\n")
Run Code Online (Sandbox Code Playgroud)
在我的测试文件中,以便我可以看到 R/testthat认为发生了什么。
如果我使用,环境变量会按照我想要的方式设置(即输出包括ON CRAN: FALSE)/测试被正确跳过)
source([testfile], echo = TRUE)
Run Code Online (Sandbox Code Playgroud)
NOT_CRAN(即,无需预先执行任何特殊操作来设置或取消设置环境变量)或
withr::with_envvar(c(NOT_CRAN = "false"),
devtools::test_active_file("tests/testthat/test-bootMer.R"))
Run Code Online (Sandbox Code Playgroud)
(如果我运行时test_active_file()没有包装它,我会得到ON CRAN: FALSE)。
但是,我没有看到devtools::test()以类似的方式运行所有测试(通过)的方法。换句话说,我不知道如何devtools::test()在“ON CRAN”模式下运行。 test()对此没有明确的参数(它有...“传递给包装函数的附加参数”,但我看不到任何相关的向下挖掘),并且使用withr::with_envvar()似乎没有帮助。devtools::check() 确实有一个明确的env_vars参数,但我希望能够运行测试而无需经历整个包检查过程......
抱歉,这不能完全重现;如果需要,我可以尝试构建一个最小的包来显示行为......
cran ×10
r ×9
devtools ×2
testthat ×2
bioconductor ×1
package ×1
pandoc ×1
r-markdown ×1
r-package ×1