我管理了Depends,建议和导入描述文件.最后我提交了我的包裹CRAN.但是在安装包装时,它只安装存放在包装下CRAN的bioconductor包装.此外,它还具有Mac OS的程序包依赖性错误:
检查Mac OS的日志
可能是什么问题呢?我怎么能修好它?
亲切的问候,
我想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以便在子进程中重新启动它?
为了庆祝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上的信息轻松构建包作者列表?
有没有办法列出包导出的对象,而不实际附加它?我试过了
ls(loadNamespace("ggplot2"))
Run Code Online (Sandbox Code Playgroud)
但是,这会显示此包中的所有已定义和导入的对象.相反,我想只看到导出的名称.即我想要的结果
library(ggplot2)
ls("package:ggplot2")
Run Code Online (Sandbox Code Playgroud)
但是没有实际将包附加到我的搜索路径.
我正在尝试构建一个R包,但似乎包依赖性存在一些问题.如果我在R中运行代码,我需要包"rgdal"和"rgeos",所以为了创建它的包,我:
当我运行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:"="需要,但没有可用的包裹".
我已经阅读了上述手册并了解了使用导入,建议或增强的选项,但我很确定依赖是我要使用的选项,因为在我的代码的功能中,我正在使用外部函数这两个包.
我究竟做错了什么?
我一直认为在'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中的一般性问题.我发现许多详细说明这些信息的来源是不够的,但我将不再提及那些相应的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中的更一般问题.
最近,当我进行颅骨检查时,我得到了关于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 包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)
正在寻找解决此问题的方法。
所述CRAN政策限制ř封装尺寸为5 MB,这是对小的图形的应用,如映射。有多种处理封装尺寸限制的方法,所有这些方法都有其缺点。下面列出了替代方案。
我的问题是:如何使R包只下载一次数据文件(即它们保存到R重新启动后找到它们的地方)?该解决方案应该适用于所有常见的 CRAN 平台。
我一直在为 R开发一个映射包,它应该在ggplot2 中绘制全球任何地方的测深图。我列出了在我遇到的 CRAN 包中处理大型数据文件的替代方法。替代方案是在编写地图时考虑到的,但适用于需要大型单个文件的任何情况:
install.packages()像使用任何其他 CRAN 包一样简单地使用该功能。事情进展顺利,每个人都很开心。install.packages()从 CRAN 安装原始包,但对开发人员也有不少缺点。设置数据包以通过所有 CRAN 检查可能有点困难,因为目前在线任何地方都没有正确指定所有步骤:原始包必须请求安装数据包的许可;对于 R 的当前开发版本,数据包必须作为单独的二进制文件分发,至少适用于 Windows 和 Mac,但也可能适用于 drat 存储库中的 Fedora;数据包应Suggests:与URL一起列出下Additional_repositories:在描述文件; 提一下我目前遇到的一些惊喜。总而言之,这种替代方案对用户来说很好,但需要开发人员进行维护。一些映射包(例如marmap)将数据下载到临时文件来自外部服务器。这种方法的优点是易于满足 CRAN 要求,并且用户不必存储比应用程序所需更多的数据。该方法还允许在下载函数中指定分辨率,这对于“缩放”地图非常有用。缺点是该过程必然比简单地在本地存储地图数据花费更多时间。另一个缺点是地图数据需要以栅格格式分发(或者服务器必须裁剪矢量)。在撰写本文时,与栅格数据相比,矢量数据允许在 R 和 ggplot2 中更轻松地操作颜色和样式。由于元素不受分辨率的限制,因此矢量还可以使图形更清晰。第三个缺点是下载方法(据我所知)必须针对临时文件(即 …
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