Tento článek vysvětluje, jak nainstalovat a nakonfigurovat R v RHEL 8 / CentOS 8.
V tomto tutoriálu se naučíte:
- Přehled R
- Statistické vlastnosti R
- Stažení, kompilace, instalace R
- Ahoj světe s R
Požadavky na software a použité konvence
Kategorie | Požadavky, konvence nebo použitá verze softwaru |
---|---|
Systém | RHEL 8 / CentOS 8 |
Software | R |
Jiné | Privilegovaný přístup k vašemu systému Linux jako root nebo prostřednictvím sudo příkaz. |
Konvence | # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí sudo příkaz$ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel |
Přehled R
R je programovací jazyk a svobodné softwarové prostředí pro statistické výpočty a grafiku podporované nadací R Foundation for Statistical Computing. Jazyk R je široce používán mezi statistiky a těžaři dat pro vývoj statistického softwaru a analýzy dat. Průzkumy, průzkumy data miningu a studie databází odborné literatury ukazují podstatné zvýšení popularity v posledních letech, k únoru 2019 je R na 15. místě v indexu TIOBE, který je měřítkem popularity programovacích jazyků.
Balíček GNU, zdrojový kód pro softwarové prostředí R je napsán primárně v C, Fortran a R samotném a je volně dostupný pod GNU General Public License. Předkompilované binární verze jsou poskytovány pro různé operační systémy. Ačkoli R má rozhraní příkazového řádku, existuje několik grafických uživatelských rozhraní, jako je RStudio, integrované vývojové prostředí.
Statistické vlastnosti R
R a jeho knihovny implementují širokou škálu statistických a grafických technik, včetně lineárního a nelineárního modelování, klasických statistických testů, analýzy časových řad, klasifikace, shlukování a dalších. R je snadno rozšiřitelný pomocí funkcí a rozšíření a komunita R je známá svými aktivními příspěvky, pokud jde o balíčky. Mnoho standardních funkcí R je napsáno v samotném R, což uživatelům usnadňuje sledovat provedené algoritmické volby. Pro výpočetně náročné úlohy lze kód C, C++ a Fortran propojit a volat za běhu. Pokročilí uživatelé mohou psát kódy C, C++, Java, .NET nebo Python a přímo manipulovat s objekty R. R je vysoce rozšiřitelný pomocí uživatelsky předložených balíčků pro specifické funkce nebo specifické oblasti studia. Díky svému dědictví S má R silnější objektově orientované programovací prostředky než většina jazyků pro statistické výpočty. Rozšíření R je také usnadněno jeho lexikálními pravidly.
Další silnou stránkou R je statická grafika, která dokáže vytvářet grafy v publikační kvalitě, včetně matematických symbolů. Dynamická a interaktivní grafika je dostupná prostřednictvím dodatečných balíčků.
R má Rd, svůj vlastní formát dokumentace podobný LaTeXu, který se používá k poskytování komplexní dokumentace, a to jak online v mnoha formátech, tak v tištěné podobě.
Stažení, kompilace, instalace R
Zdroje, binární soubory a dokumentaci pro R lze získat prostřednictvím CRAN, „Comprehensive R Archive Network“. Otevřete odkaz https://cran.r-project.org/mirrors.html a vyberte libovolné zrcadlo ke stažení R. Zde jsme použili zrcadlo z University of California, Berkeley, tj. https://cran.cnr.berkeley .edu/ ke stažení R. Po stažení rozbalte soubor R-3.5.2.tar.gz (nejnovější vydání (2018-12-20, Eggshell Igloo) a změňte oprávnění na uživatele root.
# 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
Před kompilací R ze staženého balíčku musíte nainstalovat následující balíčky pomocí příkazů níže
# 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-*
Nyní přejděte do extrahovaného adresáře a zadejte následující příkazy.
#./configure –with-x=no
Po úspěšném konfiguračním příkazu se zobrazí níže uvedená zpráva
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
Nyní spusťte níže příkazy ze stejného extrahovaného adresáře R.
# make
Pokud se tyto příkazy provedou úspěšně, vytvoří se binární R a front-end skriptu prostředí s názvem R a zkopírují se do adresáře bin. Skript můžete zkopírovat na místo, kde jej mohou uživatelé vyvolat, například do /usr/local/bin
. Kromě toho jsou vytvořeny stránky nápovědy ve formátu prostého textu a také verze dokumentace ve formátu HTML a LaTeX.
Nakonec použijte make check
abyste zjistili, zda váš systém R funguje správně.
# 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'
Chcete-li provést „celosystémovou“ instalaci, použijte make install.
# make install
Ve výchozím nastavení se to nainstaluje do následujících adresářů:
${prefix}/bin
– skript front-end shell${prefix}/man/man1
– manuálová stránka${prefix}/lib/R
– vše ostatní (knihovny, on-line systém nápovědy, …). Toto je „Domovský adresář R“ (R_HOME) nainstalovaného systému.
Ve výše uvedeném je předpona určena během konfigurace (obvykle /usr/local
) a lze jej nastavit spuštěním konfigurace s možností.
#./configure --prefix=/where/you/want/R/to/go
(Např. spustitelný soubor R bude poté nainstalován do /where/you/want/R/to/go/bin.)
Po úspěšné instalaci může být R vyvoláno následujícím příkazem.
# 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.
Ahoj světe s R
Chcete-li zkontrolovat, zda R správně funguje, vytvořte jednoduchý program Hello World R pro ověření. Vytvořte nový R kód pomocí vim a uložte s příponou *.R.
hello <- function( name ) {
sprintf( "Hello, %s", name );
}
Skript R se provádí pomocí příkazu source. Přejděte do příkazového řádku v konzole R a napište následující příkaz pro spuštění skriptu.
> source("/root/helloworld.R") > hello("LinuxConfig.org") [1] "Hello, LinuxConfig.org" >
Závěr
R je zdarma a s otevřeným zdrojovým kódem, což umožňuje komukoli mít přístup ke špičkovým nástrojům statistické analýzy. Je široce používán v akademickém i soukromém sektoru a je dnes nejpopulárnějším programovacím jazykem pro statistické analýzy. Naučit se R není snadné – kdyby tomu tak bylo, nebyli by datoví vědci tak žádáni. Neexistuje však nedostatek kvalitních zdrojů, které můžete použít k naučení se R, pokud jste ochotni tomu věnovat čas a úsilí.