标签: cran

CRAN封装取决于Bioconductor封装安装错误

我管理了Depends,建议和导入描述文件.最后我提交了我的包裹CRAN.但是在安装包装时,它只安装存放在包装下CRANbioconductor包装.此外,它还具有Mac OS的程序包依赖性错误: 检查Mac OS的日志

可能是什么问题呢?我怎么能修好它?

亲切的问候,

r bioconductor cran

12
推荐指数
3
解决办法
2232
查看次数

卸载rJava和/或重新启动JVM

我想rJava结合使用,mcparallel但显然JVM不能分叉.因此,需要为每个子进程启动单独的JVM实例,例如:

library(rJava)
library(parallel)
myfile <-  system.file("tests", "test_import.xlsx", package = "xlsx")

#This works:
mccollect(mcparallel({
  #Automatically initiates JVM in child
  xlsx::read.xlsx(myfile, 1)
}))
Run Code Online (Sandbox Code Playgroud)

但是我的问题是JVM已经在(主)父进程中启动了.这使得无法rJava在子进程中使用:

#init JVM in parent
.jinit()

#Doesn't work anymore
mccollect(mcparallel({
  xlsx::read.xlsx(myfile, 1)
}))
Run Code Online (Sandbox Code Playgroud)

所以我真正需要的是在子进程中关闭/终止和重启JVM的方法.只是 detach("package:rJava", unload = TRUE)似乎没有这样的伎俩.该force.init参数似乎不会导致重启:

#Also doesn't work:
.jinit()
mccollect(mcparallel({
  .jinit(force.init = TRUE)
  xlsx::read.xlsx(myfile, 1)
}))
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以强制关闭/杀死JVM以便在子进程中重新启动它?

java jvm r cran rjava

12
推荐指数
1
解决办法
1134
查看次数

如何从CRAN中提取所有包作者的名称

为了庆祝标签中的 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每个包的文件中都提供了此信息.所以我可以想到两种蛮力方式,两者都不是很优雅:

  1. 下载每个6,878个软件包并DESCRIPTION使用读取文件base::read.dcf()

  2. 刮掉CRAN上的每个包页面.例如,https://cran.r-project.org/web/packages/MASS/index.html告诉我Brian Ripley是MASS的作者.

我不想下载所有CRAN来回答这个问题.而且我也不想刮HTML,因为DESCRIPTION文件中的信息是一个整齐格式的person对象列表(请参阅参考资料?person).

如何使用CRAN上的信息轻松构建包作者列表?

r cran

12
推荐指数
2
解决办法
325
查看次数

从R包列出导出的对象而不附加它

有没有办法列出包导出的对象,而不实际附加它?我试过了

ls(loadNamespace("ggplot2"))
Run Code Online (Sandbox Code Playgroud)

但是,这会显示此包中的所有已定义和导入的对象.相反,我想只看到导出的名称.即我想要的结果

library(ggplot2)
ls("package:ggplot2")
Run Code Online (Sandbox Code Playgroud)

但是没有实际将包附加到我的搜索路径.

r cran

11
推荐指数
2
解决办法
1617
查看次数

R包依赖

我正在尝试构建一个R包,但似乎包依赖性存在一些问题.如果我在R中运行代码,我需要包"rgdal"和"rgeos",所以为了创建它的包,我:

  • 在"NAMESPACE"文件中添加了"import(rgdal,rgeos)"行
  • 在DESCRIPTION文件中添加了"Depends:rgeos,rgdal"行

当我运行R CMD检查(构建后)后,我收到一条错误消息:

* checking package dependencies ... ERROR
Benötigte, aber nicht verfügbare Pakete:
  'rgeos' 'rgdal'

See the information on DESCRIPTION files in the chapter 'Creating R
packages' of the 'Writing R Extensions' manual.
Run Code Online (Sandbox Code Playgroud)

德国部分错误:"Benötigte,abernichtverfügbarePakete:"="需要,但没有可用的包裹".

我已经阅读了上述手册并了解了使用导入,建议或增强的选项,但我很确定依赖是我要使用的选项,因为在我的代码的功能中,我正在使用外部函数这两个包.

我究竟做错了什么?

dependencies r package cran r-package

11
推荐指数
1
解决办法
4213
查看次数

未附加名称空间时的R包依赖性问题

我一直认为在'Depends'字段中有一个包会自动导入命名空间.但是,似乎在R 2.15中,在包实际附加到搜索路径之前,依赖性不可用.这是预期的行为吗?

问题如下所示:假设有一个包'Child' 取决于,但没有显式导入名为'Parent'的包,并包含一个调用'Parent'命名空间中的对象的函数.然后,在没有实际附加"Child"的情况下调用此函数时,无法找到"Parent"中的函数.

这里是一个bigdata包装手册的例子,但问题非常普遍:

x = matrix(rnorm(50*80),50,80)
beta = c(3,2,1.5,rep(0,77))
y = rnorm(50) + x%*%beta
z1 = bigdata::lasso.stars(x,y)
Run Code Online (Sandbox Code Playgroud)

该示例失败,因为lasso.stars依赖于'glmnet',它bigdata在连接之前未加载.能够调用的唯一方法lasso.stars是实际附加bigdata包:

library(bigdata)
z1 = bigdata::lasso.stars(x,y)
Run Code Online (Sandbox Code Playgroud)

现在为了进一步复杂的事情,看来这个问题被继承到任何"孙子"包,进口在这种情况下lasso.stars功能.我很难找到一个很好的例子,但我相信他们在那里.

这是一个错误吗?我知道可以通过要求包作者使用Imports而不是Depends来避免它,但实际上CRAN上的大多数包仍然使用Depends.如果R会自动将任何Depends包的命名空间导入子包命名空间,似乎很容易避免这个问题.

r cran

11
推荐指数
1
解决办法
602
查看次数

错误".onLoad在loadNamespace()中失败'tcltk'"

我有一个关于如何有效地将任何类型的外部包加载到R中的一般性问题.我发现许多详细说明这些信息的来源是不够的,但我将不再提及那些相应的URL.我之前已成功将外部软件包加载到R中,但是我在加载fgui软件包时遇到了困难.

在我的具体情况下,我无法将库加载fgui到R Studio中.首先,我使用以下命令直接从CRAN下载:

install.packages("fgui", lib="~/Documents/R_dir")
Run Code Online (Sandbox Code Playgroud)

这对我来说很好.我的工作目录设置为〜/ Documents/R_dir

我使用的下一个命令是:

library("fgui", lib.loc="~/Documents/R_dir")
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Error : .onLoad failed in loadNamespace() for 'tcltk', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.1/Resources/library/tcltk/libs/tcltk.so':
dlopen(/Library/Frameworks/R.framework/Versions/3.1/Resources/library/tcltk/libs/tcltk.so, 10): Library not loaded: /opt/X11/lib/libX11.6.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.1/Resources/library/tcltk/libs/tcltk.so
Reason: image not found
Error: package or namespace load failed for ‘fgui’
Run Code Online (Sandbox Code Playgroud)

我已经检查了线程" 在R中尝试加载库(ggplot2)时出错 "但它没有回答我的问题.

请帮助我提供任何建议,以使程序包fgui在R Studio中正常工作,并随时解决有效将外部程序包加载到R中的更一般问题.

tk-toolkit r cran

11
推荐指数
4
解决办法
2万
查看次数

R检查警告:'vignettes'目录中的文件但'inst/doc'中没有文件

最近,当我进行颅骨检查时,我得到了关于Win R开发版的小插图的警告.

'vignettes'目录中的文件但'inst/doc'中没有文件

此警告仅在Win Dev版本中出现.对于Mac,AppVeyor和Travis不会出现警告.

问题是,我不知道警告要告诉我什么.据我所知,我不必将文件放在inst/doc中.

这是完整的警告信息:

Files in the 'vignettes' directory but no files in 'inst/doc':
'Figures.d/Rlogo.png', 'Figures.d/distribution.pdf',
'Figures.d/distributionbar.pdf', 'Figures.d/gapsize.pdf',
'Figures.d/imputations.pdf', 'Figures.d/imputations2.pdf',
'Figures.d/sponsorlogo.jpg', 'Figures.d/statsna.png',
'Figures.d/tsairgap.png', 'Introduction.pdf', 'Introduction.tex',
'RJournal.sty'
Run Code Online (Sandbox Code Playgroud)

r cran r-package

11
推荐指数
3
解决办法
2029
查看次数

R:从本地 tar.gz 安装 R 包时找不到“make”

R 包ConvCalendar不再位于 Cran 存储库中(请参阅此处)。但是,因为我在以前的项目中大量使用了这个包,所以将它安装在我的机器上会很好,即使是旧版本也足够了。

(Windows 10 环境)

在上面的链接中,可以ConvCalendar从存档中下载旧版本。我因此做到了,并尝试通过运行(devtools也已安装和加载)来安装它:

install.packages("ConvCalendar_1.2.tar.gz", repos=NULL, type="source")
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误消息:

> install.packages("ConvCalendar_1.0.tar.gz", repos=NULL, type="source")
Installing package into ‘C:/Users/myname/Documents/R/win-library/3.5’
(as ‘lib’ is unspecified)
* installing *source* package 'ConvCalendar' ...
** libs

*** arch - i386
Warning in system(cmd) : 'make' not found
ERROR: compilation failed for package 'ConvCalendar'
* removing 'C:/Users/myname/Documents/R/win-library/3.5/ConvCalendar'
In R CMD INSTALL
Warning in install.packages :
  installation of package ‘ConvCalendar_1.2.tar.gz’ had non-zero exit status
Run Code Online (Sandbox Code Playgroud)

正在寻找解决此问题的方法。

installation r package cran

11
推荐指数
2
解决办法
2万
查看次数

无论操作系统如何,如何使 CRAN 包只下载一次数据?

所述CRAN政策限制ř封装尺寸为5 MB,这是对小的图形的应用,如映射。有多种处理封装尺寸限制的方法,所有这些方法都有其缺点。下面列出了替代方案。

我的问题是:如何使R包只下载一次数据文件(即它们保存到R重新启动后找到它们的地方)?该解决方案应该适用于所有常见的 CRAN 平台。

我一直在为 R开发一个映射包,它应该在ggplot2 中绘制全球任何地方的测深图。我列出了在我遇到的 CRAN 包中处理大型数据文件的替代方法。替代方案是在编写地图时考虑到的,但适用于需要大型单个文件的任何情况:

  1. 大文件移动到数据包中,并使原始包依赖于数据包。

    • a)如果数据包<5Mb,可以上传到CRAN,可以在DESCRIPTION字段中做原始依赖或者导入数据包。用户可以install.packages()像使用任何其他 CRAN 包一样简单地使用该功能。事情进展顺利,每个人都很开心。
    • b)如果数据包大于 5 Mb,事情就会变得混乱。理论上,一种替代方法是为每个文件制作一个单独的数据包,前提是数据文件都小于 5 Mb。然后可以对每个数据包使用 1a 中的方法。这个替代方案太老套了,以至于我没有勇气在实践中尝试它。如果有人在评论中听到会很有趣。
    • c)另一个更好的选择是使用drat 包制作数据包,例如,到 GitHub。这种替代方案的好处是用户可以编写install.packages()从 CRAN 安装原始包,但对开发人员也有不少缺点。设置数据包以通过所有 CRAN 检查可能有点困难,因为目前在线任何地方都没有正确指定所有步骤:原始包必须请求安装数据包的许可;对于 R 的当前开发版本,数据包必须作为单独的二进制文件分发,至少适用于 Windows 和 Mac,但也可能适用于 drat 存储库中的 Fedora;数据包应Suggests:URL一起列出Additional_repositories:在描述文件; 提一下我目前遇到的一些惊喜。总而言之,这种替代方案对用户来说很好,但需要开发人员进行维护。
  2. 一些映射包(例如marmap)将数据下载到临时文件来自外部服务器。这种方法的优点是易于满足 CRAN 要求,并且用户不必存储比应用程序所需更多的数据。该方法还允许在下载函数中指定分辨率,这对于“缩放”地图非常有用。缺点是该过程必然比简单地在本地存储地图数据花费更多时间。另一个缺点是地图数据需要以栅格格式分发(或者服务器必须裁剪矢量)。在撰写本文时,与栅格数据相比,矢量数据允许在 R 和 ggplot2 中更轻松地操作颜色和样式。由于元素不受分辨率的限制,因此矢量还可以使图形更清晰。第三个缺点是下载方法(据我所知)必须针对临时文件(即 …

gis r download cran

11
推荐指数
1
解决办法
331
查看次数

标签 统计

cran ×10

r ×10

package ×2

r-package ×2

bioconductor ×1

dependencies ×1

download ×1

gis ×1

installation ×1

java ×1

jvm ×1

rjava ×1

tk-toolkit ×1