Ubuntu系统下在R中提升DLL最大数量:解决命令行方案无效问题
解决Linux下R的"maximal number of DLLs reached..."报错(内部调整方案)
我之前在Linux上用R的时候也反复碰到这个烦人的报错——maximal number of DLLs reached...,试了网上说的依赖操作系统的命令行调整方法完全没用,后来折腾出了在R内部直接提升DLL上限的办法,亲测有效:
步骤1:查看当前的DLL上限
先确认一下当前R允许加载的最大DLL数量,在R控制台里执行:
tools:::.dlls_max
默认值一般是100左右,这就是为啥加载多了包会触发报错。
步骤2:临时提升DLL上限
直接修改tools包内部的限制变量,比如把它改成256(你可以根据自己的需求调整,不用设置得过于夸张):
assignInNamespace(".dlls_max", 256, ns = "tools")
执行完这个命令后,再去加载之前报错的包,应该就不会再触发DLL数量限制了。
步骤3:让设置永久生效(可选)
上面的修改只是临时的,重启R后就会恢复默认值。如果想每次启动R自动应用这个设置,把下面的代码加到你的.Rprofile文件里:
if (exists(".dlls_max", envir = asNamespace("tools"))) { assignInNamespace(".dlls_max", 256, ns = "tools") }
.Rprofile一般在你的用户主目录下(路径是~/.Rprofile),如果没有的话直接新建一个就行。
注意事项
- 不要把数值设得太高,毕竟每个DLL都会占用系统资源,200-256的数值基本能覆盖大多数需要加载多个依赖包的场景了。
- 这个方法只在R内部生效,不需要修改任何系统级配置,完美适配Linux系统。
内容的提问来源于stack exchange,提问作者piie
相关产品推荐
相关产品推荐

