Die Erhöhung dieser Zahl ist natürlich "möglich" ... aber es kostet auch ein bisschen (Hinzufügen zum festen Speicherbedarf von R).
Ich habe dieses Limit nicht festgelegt, aber ich bin mir ziemlich sicher, dass es auch als Erinnerung daran gedacht war, dass der Benutzer ein wenig in seiner R-Sitzung "aufräumt", d. H. Paketnamespaces nicht unnötig lädt. Ich kann mir noch nicht vorstellen, dass du> 100 Pakete benötigst | Namespaces, die in Ihrer R-Sitzung geladen wurden. OTOH, einige Pakete haben heutzutage eine Vielzahl von Abhängigkeiten, so stimme ich zu, dass dies zumindest zufällig öfter passieren kann als in der Vergangenheit. Die eigentliche Lösung wäre natürlich eine Codeverbesserung, die mit einer relativ kleinen Anzahl von "DLLinfo" -Strukturen (sagen wir 32) beginnt und dann bei Bedarf weitere Batches (etwa 32) zuweist.
Patches zu den R-Quellen (Entwicklungsstamm in Subversion bei https://svn.r-project.org/R/trunk/) sind sehr willkommen!
---- hinzugefügt 26. Jan. 2017: In der Zwischenzeit hatten wir eine public bug report darüber, ein vorgeschlagenes Patch (was nicht gut genug war: Es gibt immer ein Betriebssystem abhängig von der Anzahl der offene Dateien), und heute, dass Bug-Report von R Kernelement @TomasKalibera geschlossen wurde, den neuen Code implementiert, wo die maximale Anzahl des geladenen DLLs bei
pmax(100, pmin(1000, 0.6* OS_dependent_getrlimit_or_equivalent()))
und so unter Windows und Linux (und noch nicht getestet gesetzt , aber "fast sicher" macOS), sollte die Grenze deutlich höher als zuvor sein.
----- Update # 2 (geschrieben am 5. Januar 2018):
Im Oktober 17 wurde die obige Änderung mit folgenden Commits zu den Quellen (der Entwicklungsversion von R - automatischer gemacht: nur!)
r73545 | kalibera | 2017-10-12 14:41:20
Increase the number of DLLs that can be loaded by default. If needed, increase the soft limit on open files.
und auf der Hilfeseite ?dyn.load
(https://stat.ethz.ch/R-manual/R-devel/library/base/html/dynload.html) wird die ulimit -n <num_open_files>
jetzt erwähnt (Abschnitt Hinweis schließen nach unten).
Sie könnten also die Entwicklungsversion von R in Betracht ziehen, bis sie im April "Mainstream" wird.
Alternativ haben Sie (in einem Terminal/Shell)
ulimit -n 2048
und dann R von diesem Terminal starten. Tomas Kalibera hat dies erwähnt, um auf macOS zu arbeiten.
Haben Sie versucht, Microsoft R zu verwenden? Ich bin mir nicht sicher, ob das funktionieren wird, aber es könnte eine brauchbare Alternative sein. – hrbrmstr
Ich habe gerade den Quellcode von Microsoft R überprüft. Ich glaube nicht, dass sie den '#define MAX_NUM_DLLS 100' Code geändert haben. Außerdem können einige Pakete, die kompiliert werden müssen, nicht installiert werden. –