Dieser Artikel erläutert die Installation und Konfiguration von R in RHEL 8 / CentOS 8.
In diesem Tutorial lernen Sie:
- R-Übersicht
- Statistische Merkmale von R
- Download, Kompilierung, Installation von R
- Hallo Welt mit R
Softwareanforderungen und verwendete Konventionen
Kategorie | Anforderungen, Konventionen oder verwendete Softwareversion |
---|---|
System | RHEL 8 / CentOS 8 |
Software | R |
Andere | Privilegierter Zugriff auf Ihr Linux-System als root oder über sudo Befehl. |
Konventionen | # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung von sudo Befehl$ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden |
R-Übersicht
R ist eine Programmiersprache und freie Softwareumgebung für statistische Berechnungen und Grafiken, die von der R Foundation for Statistical Computing unterstützt wird. Die Sprache R wird von Statistikern und Dataminern häufig zur Entwicklung statistischer Software und Datenanalyse verwendet. Umfragen, Data-Mining-Umfragen und Studien von wissenschaftlichen Literaturdatenbanken zeigen einen erheblichen Anstieg der Popularität in den letzten Jahren, seit Februar 2019 belegt R den 15. Platz im TIOBE-Index, ein Maß für die Popularität von Programmiersprachen.
Ein GNU-Paket, Quellcode für die R-Softwareumgebung ist hauptsächlich in C, Fortran und R selbst geschrieben und ist unter der GNU General Public License frei verfügbar. Für verschiedene Betriebssysteme werden vorkompilierte Binärversionen bereitgestellt. Obwohl R über eine Befehlszeilenschnittstelle verfügt, gibt es mehrere grafische Benutzerschnittstellen, wie z. B. RStudio, eine integrierte Entwicklungsumgebung.
Statistische Merkmale von R
R und seine Bibliotheken implementieren eine Vielzahl statistischer und grafischer Techniken, darunter lineare und nichtlineare Modellierung, klassische statistische Tests, Zeitreihenanalyse, Klassifizierung, Clustering und andere. R ist durch Funktionen und Erweiterungen leicht erweiterbar, und die R-Community ist bekannt für ihre aktiven Beiträge in Bezug auf Pakete. Viele der Standardfunktionen von R sind in R selbst geschrieben, was es Benutzern leicht macht, die getroffenen algorithmischen Entscheidungen zu verfolgen. Für rechenintensive Aufgaben kann C-, C++- und Fortran-Code verknüpft und zur Laufzeit aufgerufen werden. Fortgeschrittene Benutzer können C-, C++-, Java-, .NET- oder Python-Code schreiben, um R-Objekte direkt zu manipulieren. R ist durch die Verwendung von vom Benutzer eingereichten Paketen für bestimmte Funktionen oder bestimmte Studienbereiche in hohem Maße erweiterbar. Aufgrund seines S-Erbes verfügt R über stärkere objektorientierte Programmiermöglichkeiten als die meisten statistischen Rechensprachen. Das Erweitern von R wird auch durch seine lexikalischen Scoping-Regeln erleichtert.
Eine weitere Stärke von R sind statische Grafiken, die Diagramme in Veröffentlichungsqualität erzeugen können, einschließlich mathematischer Symbole. Dynamische und interaktive Grafiken sind über zusätzliche Pakete verfügbar.
R hat Rd, sein eigenes LaTeX-ähnliches Dokumentationsformat, das verwendet wird, um umfassende Dokumentation bereitzustellen, sowohl online in einer Reihe von Formaten als auch in Papierform.
Download, Kompilierung, Installation von R
Quellen, Binärdateien und Dokumentation für R können über CRAN, das „Comprehensive R Archive Network“, bezogen werden. Öffnen Sie den Link https://cran.r-project.org/mirrors.html und wählen Sie einen der Mirrors aus, um R herunterzuladen. Hier haben wir den Mirror der University of California, Berkeley, verwendet, d. h. https://cran.cnr.berkeley .edu/, um R herunterzuladen. Nachdem Sie die R-3.5.2.tar.gz-Datei (die neueste Version (2018-12-20, Eggshell Igloo) heruntergeladen haben, extrahieren Sie sie und ändern Sie die Berechtigung für den Root-Benutzer.
# tar -xzvf R-3.5.2.tar.gz # ls -lrth total 29M drwxr-xr-x. 10 501 games 4.0K Dec 20 12:04 R-3.5.2 -rw-------. 1 root root 1.2K Feb 3 22:58 anaconda-ks.cfg
# chown -R root:root R-3.5.2/ # ls -lrth total 29M drwxr-xr-x. 10 root root 4.0K Dec 20 12:04 R-3.5.2 -rw-------. 1 root root 1.2K Feb 3 22:58 anaconda-ks.cfg
Bevor Sie das R aus dem heruntergeladenen Paket kompilieren, müssen Sie die folgenden Pakete mit den folgenden Befehlen installieren
# yum group install "Development tools" # yum install readline-devel # yum install xz xz-devel # yum install pcre pcre-devel # yum install libcurl-devel # yum install texlive # yum install java-1.8.0-openjdk # yum install *gfortran* # yum install zlib* # yum install bzip2-*
Wechseln Sie nun in das extrahierte Verzeichnis und führen Sie die folgenden Befehle aus.
#./configure –with-x=no
Nach erfolgreichem Konfigurationsbefehl erhalten Sie die folgende Meldung
R is now configured for x86_64-pc-linux-gnu Source directory: . Installation directory: /usr/local C compiler: gcc -g -O2 Fortran 77 compiler: f95 -g -O2 Default C++ compiler: g++ -g -O2 C++98 compiler: g++ -std=gnu++98 -g -O2 C++11 compiler: g++ -std=gnu++11 -g -O2 C++14 compiler: g++ -std=gnu++14 -g -O2 C++17 compiler: g++ -std=gnu++17 -g -O2 Fortran 90/95 compiler: gfortran -g -O2 Obj-C compiler: Interfaces supported: External libraries: readline, curl Additional capabilities: NLS Options enabled: shared BLAS, R profiling Capabilities skipped: PNG, JPEG, TIFF, cairo, ICU Options not enabled: memory profiling Recommended packages: yes
Führen Sie nun die folgenden Befehle aus demselben extrahierten R-Verzeichnis aus.
# make
Wenn diese Befehle erfolgreich ausgeführt werden, werden die R-Binärdatei und ein Shell-Skript-Front-End namens R erstellt und in das bin-Verzeichnis kopiert. Sie können das Skript an einen Ort kopieren, an dem Benutzer es aufrufen können, beispielsweise nach /usr/local/bin
. Außerdem werden Klartext-Hilfeseiten sowie HTML- und LaTeX-Versionen der Dokumentation erstellt.
Verwenden Sie schließlich make check
um herauszufinden, ob Ihr R-System korrekt funktioniert.
# make check make[1]: Entering directory '/root/R-3.5.2/tests' make[2]: Entering directory '/root/R-3.5.2/tests' make[3]: Entering directory '/root/R-3.5.2/tests/Examples' Testing examples for package ‘base’ Testing examples for package ‘tools’ comparing ‘tools-Ex.Rout’ to ‘tools-Ex.Rout.save’ ... OK Testing examples for package ‘utils’ Testing examples for package ‘grDevices’ comparing ‘grDevices-Ex.Rout’ to ‘grDevices-Ex.Rout.save’ ... OK Testing examples for package ‘graphics’ comparing ‘graphics-Ex.Rout’ to ‘graphics-Ex.Rout.save’ ... OK Testing examples for package ‘stats’ comparing ‘stats-Ex.Rout’ to ‘stats-Ex.Rout.save’ ... OK Testing examples for package ‘datasets’ comparing ‘datasets-Ex.Rout’ to ‘datasets-Ex.Rout.save’ ... OK Testing examples for package ‘methods’ Testing examples for package ‘grid’ comparing ‘grid-Ex.Rout’ to ‘grid-Ex.Rout.save’ ... OK Testing examples for package ‘splines’ comparing ‘splines-Ex.Rout’ to ‘splines-Ex.Rout.save’ ... OK Testing examples for package ‘stats4’ comparing ‘stats4-Ex.Rout’ to ‘stats4-Ex.Rout.save’ ... OK Testing examples for package ‘tcltk’ Testing examples for package ‘compiler’ Testing examples for package ‘parallel’ make[3]: Leaving directory '/root/R-3.5.2/tests/Examples' make[2]: Leaving directory '/root/R-3.5.2/tests' make[2]: Entering directory '/root/R-3.5.2/tests' running strict specific tests make[3]: Entering directory '/root/R-3.5.2/tests' running code in 'eval-etc.R' ... OK comparing 'eval-etc.Rout' to './eval-etc.Rout.save' ... OK running code in 'simple-true.R' ... OK comparing 'simple-true.Rout' to './simple-true.Rout.save' ... OK running code in 'arith-true.R' ... OK comparing 'arith-true.Rout' to './arith-true.Rout.save' ... OK running code in 'arith.R' ... OK comparing 'arith.Rout' to './arith.Rout.save' ... OK running code in 'lm-tests.R' ... OK comparing 'lm-tests.Rout' to './lm-tests.Rout.save' ... OK running code in 'ok-errors.R' ... OK comparing 'ok-errors.Rout' to './ok-errors.Rout.save' ... OK running code in 'method-dispatch.R' ... OK comparing 'method-dispatch.Rout' to './method-dispatch.Rout.save' ... OK running code in 'any-all.R' ... OK comparing 'any-all.Rout' to './any-all.Rout.save' ... OK running code in 'd-p-q-r-tests.R' ... OK comparing 'd-p-q-r-tests.Rout' to './d-p-q-r-tests.Rout.save' ... OK make[3]: Leaving directory '/root/R-3.5.2/tests' running sloppy specific tests make[3]: Entering directory '/root/R-3.5.2/tests' running code in 'complex.R' ... OK comparing 'complex.Rout' to './complex.Rout.save' ... OK running code in 'eval-etc-2.R' ... OK comparing 'eval-etc-2.Rout' to './eval-etc-2.Rout.save' ... OK running code in 'print-tests.R' ... OK comparing 'print-tests.Rout' to './print-tests.Rout.save' ... OK running code in 'lapack.R' ... OK comparing 'lapack.Rout' to './lapack.Rout.save' ... OK running code in 'datasets.R' ... OK comparing 'datasets.Rout' to './datasets.Rout.save' ... OK running code in 'datetime.R' ... OK comparing 'datetime.Rout' to './datetime.Rout.save' ... OK running code in 'iec60559.R' ... OK comparing 'iec60559.Rout' to './iec60559.Rout.save' ... OK make[3]: Leaving directory '/root/R-3.5.2/tests' make[3]: Entering directory '/root/R-3.5.2/tests' checking Sys.timezone ... make[4]: Entering directory '/root/R-3.5.2/tests' running code in 'timezone.R' ... OK make[4]: Leaving directory '/root/R-3.5.2/tests' make[3]: Leaving directory '/root/R-3.5.2/tests' make[2]: Leaving directory '/root/R-3.5.2/tests' make[2]: Entering directory '/root/R-3.5.2/tests' running regression tests ... make[3]: Entering directory '/root/R-3.5.2/tests' running code in 'array-subset.R' ... OK running code in 'reg-tests-1a.R' ... OK running code in 'reg-tests-1b.R' ... OK running code in 'reg-tests-1c.R' ... OK running code in 'reg-tests-1d.R' ... OK running code in 'reg-tests-2.R' ... OK comparing 'reg-tests-2.Rout' to './reg-tests-2.Rout.save' ... OK running code in 'reg-examples1.R' ... OK running code in 'reg-examples2.R' ... OK running code in 'reg-packages.R' ... OK running code in 'p-qbeta-strict-tst.R' ... OK running code in 'r-strict-tst.R' ... OK running code in 'reg-IO.R' ... OK comparing 'reg-IO.Rout' to './reg-IO.Rout.save' ... OK running code in 'reg-IO2.R' ... OK comparing 'reg-IO2.Rout' to './reg-IO2.Rout.save' ... OK running code in 'reg-plot.R' ... OK comparing 'reg-plot.pdf' to './reg-plot.pdf.save' ... OK running code in 'reg-S4-examples.R' ... OK running code in 'reg-BLAS.R' ... OK make[3]: Leaving directory '/root/R-3.5.2/tests' make[3]: Entering directory '/root/R-3.5.2/tests' running code in 'reg-tests-3.R' ... OK comparing 'reg-tests-3.Rout' to './reg-tests-3.Rout.save' ... OK running code in 'reg-examples3.R' ... OK comparing 'reg-examples3.Rout' to './reg-examples3.Rout.save' ... OK running tests of plotting Latin-1 expect failure or some differences if not in a Latin-1 or UTF-8 locale running code in 'reg-plot-latin1.R' ... OK comparing 'reg-plot-latin1.pdf' to './reg-plot-latin1.pdf.save' ... OK running code in 'reg-S4.R' ... OK comparing 'reg-S4.Rout' to './reg-S4.Rout.save' ... OK make[3]: Leaving directory '/root/R-3.5.2/tests' make[2]: Leaving directory '/root/R-3.5.2/tests' make[2]: Entering directory '/root/R-3.5.2/tests' running tests of Internet functions make[3]: Entering directory '/root/R-3.5.2/tests' running code in 'internet.R' ... OK comparing 'internet.Rout' to './internet.Rout.save' ... OK make[3]: Leaving directory '/root/R-3.5.2/tests' make[2]: Leaving directory '/root/R-3.5.2/tests' make[1]: Leaving directory '/root/R-3.5.2/tests'
Um eine „systemweite“ Installation durchzuführen, verwenden Sie make install.
# make install
Standardmäßig wird dies in den folgenden Verzeichnissen installiert:
${prefix}/bin
– das Frontend-Shell-Skript${prefix}/man/man1
– die Manpage${prefix}/lib/R
– alles andere (Bibliotheken, Online-Hilfesystem, …). Dies ist das „R Home Directory“ (R_HOME) des installierten Systems.
Oben wird das Präfix während der Konfiguration bestimmt (normalerweise /usr/local
) und kann durch Ausführen von configure mit der Option.
#./configure --prefix=/where/you/want/R/to/go
(Beispielsweise wird die ausführbare R-Datei dann in /where/you/want/R/to/go/bin installiert.)
Nach erfolgreicher Installation kann R mit dem folgenden Befehl aufgerufen werden.
# R R version 3.5.2 (2018-12-20) -- "Eggshell Igloo" Copyright (C) 2018 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. Natural language support but running in an English locale R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R.
Hallo Welt mit R
Um zu überprüfen, ob R richtig funktioniert, erstellen wir ein einfaches Hello World R-Programm zur Überprüfung. Erstellen Sie einen neuen R-Code mit vim und speichern Sie ihn mit der Erweiterung *.R.
hello <- function( name ) {
sprintf( "Hello, %s", name );
}
Das R-Skript wird mit dem Quellbefehl ausgeführt. Gehen Sie zur Eingabeaufforderung in der R-Konsole und schreiben Sie den folgenden Befehl, um das Skript auszuführen.
> source("/root/helloworld.R") > hello("LinuxConfig.org") [1] "Hello, LinuxConfig.org" >
Schlussfolgerung
R ist kostenlos und quelloffen, sodass jeder Zugriff auf erstklassige statistische Analysetools hat. Es wird in der Wissenschaft und im Privatsektor weit verbreitet und ist heute die beliebteste Programmiersprache für statistische Analysen. Das Erlernen von R ist nicht einfach – wenn es so wäre, wären Data Scientists nicht so gefragt. Es gibt jedoch keinen Mangel an hochwertigen Ressourcen, die Sie zum Erlernen von R verwenden können, wenn Sie bereit sind, Zeit und Mühe zu investieren.