Softpanorama

May the source be with you, but remember the KISS principle ;-)
Contents Bulletin Scripting in shell and Perl Network troubleshooting History Humor

R programming language

News Scripting languages R Bookshelf Recommended Links R_installation on RHEL An Introduction to R R Style Guide
R data types Vectors Factors R Data Frames Matrices I/O Functions
Rstudio R Debugging General principles of debugging R help system R-Studio Keyboard Shortcuts R Environment Variables  
R Packages CRAN package repository Quantmod package TTR Package Zoo package ggplot2 package  
Brooks law  Conway Law Code Reviews and Inspections Code Metrics Software Engineering Programming style A Slightly Skeptical View on Scripting Languages
Software Fashion KISS Principle Tips Quotes R history Humor Etc


Introduction

R is a language and environment for statistical computing and graphics. Although there are pattern matching and text substitution functions in R, it is not well suited to writing text transformation programs. Perl, Python or Ruby should be used instead. A pretty recent success of R language might suggest that epoch of universal languages is coming to the end and the future now belongs to specialized languages. The S language that is predecessor of R exists for a long time and is older then Perl. Actually it is almost as old as Unix (the first working version was created in 1976 for GCOS operating system).   But somehow R reached critical mass and became huge success only since 2000. It is one of very few languages, which managed to push its way to the club of popular languages since 2000. Only LUA and Ruby can boast the same for the same period.  R beats them in the number of books about it published by an order of magnitute.

As the language R does not follow the principle of least astonishment (POLA). The latter means that the language should behave in such a way as to minimize confusion for experienced users. For programmers who are used to Perl and Python some features of the language look pretty annoying.

R is "very high level language" (VHL) and allows operations on whole vectors (one dimensional arrays), data frames (two dimensional data structure similar to Excel spreadsheet),  matrixes, etc. The problem with R approach to problem solving is that it highly dependent on finding suitable packages and learning to use them and as such is not very intuitive. A lot of programming effort in R is revolving around finding (often broken)  code samples via Google ;-). So very high level is not a free lunch :-).

Unfortunately books on R are very weak in explaining the underling mechanisms of R -- 99% of them are just recipe books which show you how to cook particular dish using particular packages as ingredients.  And that's it.

One of the main attractions of using the R (http://cran.at.r-project.org) environment is the ease with which users can write simple programs, based onprovided in textbooks samples. But this is  not true about complex program. You need to know quite a bit to debug such a program and amount of effort might be ocmpatible or greater then in Pythin or Java. Studying code in the packages that you use can help but takes quite abit of your time.  In any case for complex programs you need to learn R to the level of package developer. Anything less then that does not work.

Like with Perl, using packages is tradeoff that not always pays. Much depends on quality of package and how closely it fits the domain in which you are writing your program. 

Generally program in in R is a set of functions. That means that when writing complex R program you typically need to use a dozen of so (complex) packages as many of those function that you need come from those  packages. Most such packages are not part of R language and are not installed by default. You need to install them manually. Typically  from CRAN (R packages repository)

That create classic "Alice in Wonderland" situation, similar to one that is experienced by Perl, Python and Java programmers. Learning to use a particular package often is as time consuming as writing your own code for the particular task. It requires experimentation, reading and re-reading documentation (which typically leaves much to be desired) trying to find relevant post and articles via Google  and adapting to package developer mindset. Sometimes the package makes assumption that are from some point are unreasonable and are not documented. For example I recently uncounted the situation when computation of Bollinger bands presupposed that dataset is sorted in ascending order.

While R programming syntax is simple and  easy to learn, the semantic of R constructs is very tricky  and not intuitive even for programmers proficient in other scripting languages such as Perl or Python. While number of books on R is large, very few provide high quality explanation of the language constructs and its tricky semantic. 

As I mentioned before programming using packages typically requires a lot of experimentation. Moreover  packages are of uneven quality and uneven level of maintenance. Welcome to the packages hell.

Still despite its warts R  users can use the R language as a powerful environment to perform complex custom statistical analyses. For example it is well suited for analyzing time series such as stock data.

Basic facts

A little bit of history

R is a vector  based very high level (VHL) language which become de-facto standard for statistical research, statistical computing and graphics. It's more of environment with language sitting in the specialized environment the a pure programming language.

Historically R is an open source (under GPL license) re-implementation of the S programming language combined with lexical scoping semantics inspired by Scheme.

S language was created by John Chambers while at Bell Labs as one of several statistical computing languages that were designed at Bell Laboratories. Initial implementation was done  in 1975–1976 for the GCOS operating system. When UNIX/32V was ported to the (then new) 32-bit DEC VAX, computing on the Unix platform became feasible for S. In late 1979, S was ported from GCOS to UNIX, which would become the new primary platform. In 1980 the first version of S was distributed outside Bell Laboratories and in 1981 source versions were made available. In 1984 two books were published by the research team at Bell Laboratories: S: An Interactive Environment for Data Analysis and Graphics[2] (1984 Brown Book) and Extending the S System. Since 1984 the source code for S became licensed through AT&T Software Sales for education and commercial purposes. All that means that S language is pretty old. Older then Python, Roby and Java and as old as Perl.

R was created by Ross Ihaka and Robert Gentleman at the University of Auckland, New Zealand, and is currently developed by the R Development Core Team, of which Chambers is a member. R is named partly after the first names of the first two R authors and partly as a play on the name of S. The first version was 0.49 from Spril 23, 1997. Version 1.0 which was considered by developers to be stable enough for production use was release on Feb 29, 2000.

R is a GNU project licensed under GNU General Public License. The source code for the R software environment is written primarily in C, Fortran, and R.  R's popularity has increased substantially in recent years.

Both binaries for Windows and Linux are available from R-website:

For more information see R history

Environment

Standard de-facto environment for R is R-studio. It has built-in debugger and editor with syntax highlighting.

There are two versions:

RStudio is highly customizable. The first thing to customize is size of the font to display R programs. The default value is 10. I would recommend 11 or higher. With 10 it is difficult to distinguish some symbols such as comma and dot.

Interface contains four panes.

  1. The lower left pane is typically the R console, which can be used just like the standard R console.

  2. The upper left pane serves as a text editor.

  3. The upper right pane holds information about the workspace, command history, files in the current folder and Git version control.

  4. The lower right pane displays plots, package information and help files.

Like in Visual Studio you can group several functions and data they operate in the project, which is a folder in filesystem with a several special files.  When project is opened those special files are loaded automatically creating environment that is close to the one you used to have when you last close the project.

RStudio projects are associated with R working directories. You can create an RStudio project:

To create a new project use the Create Project command (available on the Projects menu and on the global toolbar):

When a new project is created RStudio:
  1. Creates a project file (with the extension.Rproj ) in the project directory. This file contains various project options and can also be used as a shortcut for opening the project directly from the filesystem.
  2. Creates a hidden directory (named .Rproj.user ) where project-specific temporary files (e.g. auto-saved source documents, window-state, etc.) are stored. This directory is also automatically added to .Rbuildignore, .gitignore, etc. if required.
  3. Loads the project into RStudio and display its name in the Projects toolbar (which is located on the far right side of the main toolbar)

There are several ways to open a project:

  1. Using the Open Project command (available from both the Projects menu and the Projects toolbar) to browse for and select an existing project file (e.g. MyProject.Rproj).
  2. Selecting a project from the list of most recently opened projects (also available from both the Projects menu and toolbar).
  3. Double-clicking on the project file within the system shell (e.g. Windows Explorer, OSX Finder, etc.).

When a project is opened within RStudio the following actions are taken:

To run a script pass a string with its name to the source function.

When you are within a project and choose to either Quit, close the project, or open another project the following actions are taken:

You can work with more than one RStudio project at a time by simply opening each project in its own instance of RStudio. There are two ways to accomplish this:

  1. Use the Open Project in New Window command located on the Project menu.
  2. Opening multiple project files via the system shell (i.e. double-clicking on the project file).

There are several options that can be set on a per-project basis to customize the behavior of RStudio. You can edit these options using the Project Options command on the Project menu:

R command line provides access to help via ?[function] or ??[topic]

Sites and free books 

Note: An excellent resource as books and websites related to R is 60+ R resources to improve your data skills Computerworld. Please visit it.

A large, cookbook-style collection of material on R contains Stack Overflow site.

Free books (adapted from The R Programming Language - Free Computer, Programming, Mathematics, Technical Books, Lecture Notes and Tutorials)

R has its own LaTeX-like documentation format, which is used to supply comprehensive documentation, both on-line in a number of formats and in hard copy.

See also R Bookshelf

Packages and CRAN

The power of R is heavily based on a large set available packages which extend the core language. R package structure reminds Perl. Similar to Perl, the main repository is called Comprehensive R Archive Network (CRAN). It contains thousands of packages. A core set of packages is included with the installation of R The set of packages loaded on startup is by default can be displayed using the command:

> getOption("defaultPackages")

All-in-all there are around 6K additional packages for R and 120,000 functions (as of June 2014) available at the CRAN and other repositories.  In other words R like Perl is suffering from package glut.  the following discussion would resonate with any long-term Perl user (Does R have too many packages R-bloggers)

1 Lack of long term maintenance of packages.  This has been a challenge that I have faced when using R packages which I believe will provide the solution to my problem but these packages frequently are not maintained at the same rate as the R base system.

And how could they be?  The base system is updated several times a year while there are thousands of packages.  To update each of those packages for minor changes in the base system seems foolish and excessive.  However, as the current structure of R stands, to fail to update these packages results in packages which previously worked, no longer functioning.  This is a problem I have experienced and is frankly very annoying.

One solution might be to limit the number of packages to those which have a sufficient developer base to ensure long term maintenance.  However, this would likely stifle the creativity and productivity of the wide R developer base.

Another solution is to limit the number of base system updates in order to limit the likelihood that a package will become outdated and need updating.

A third option, which I believe is the most attractive, is to allow code to specify what version of R it is stable on and for R to act for the commands in that package as though it is running on a previous version of R.  This idea is inspired by how Stata handles user written commands.  These commands simply specify version number for which the command was written under.  No matter what later version of Stata is used, the command should still work.

I understand that such an implementation would require additional work from the R core team for each subsequent update.  However, such an investment may be worth it in the long run as it would decrease the maintenance in response to R base updates.

2 The super abundance of R packages.  The concern is that there are so many packages that users might find it difficult to wade through them in order to find the right package.  I don't really see this as a problem.  If someone wanted to learn to use all R packages then of course this task would be nearly impossible.  However, with me as I believe with most people, I learn to use new functions within packages to solve specific problems.  I don't really care how many packages there are out there.  All I care is that when I ask a question on google or StackOverflow about how to do x or y, someone can point me to the package and command combination necessary to accomplish the task.

3 The inconsistent quality of individual packages.  It is not always clear if user written packages are really doing what they claim to be doing.  I know personally I and am constantly on the look out for checks to make sure my code is doing what I think it is doing, yet still I consistently find myself making small errors which only show up through painstaking experimentation and debugging. 

CRAN has some automated procedures in which packages are tested to ensure that all of their functions work without errors under normal circumstances.  However, as far as I know, there are no automated tests to ensure the commands are not silently giving errors by doing the wrong thing.  These kind of error controls are entirely left up to the authors and users.  This concern comes to mind because one of my friends recently was running two different Bayesian estimation packages which were supposed to produce identical results yet each returned distinctly different results with one set having significant estimates and the other not.  If he had not thought to try two different packages then he would never have thought of the potential errors inherent in the package authorship.

A solution to inconsistent package quality controls may be to have a multitiered package release structure in which packages are first released in "beta form" but require an independent reviewing group to check functionality and write up reports before attaining "full" release status.  Such an independent package review structure may be accomplished by developing an open access R-journal specifically geared towards the review, release, and revision of R packages.

4 The lack of hierarchical dependencies.  This is a major point mentioned in Kurt Hornik's paper.  He looks at package dependencies and found that the majority of packages have no dependencies upon other packages.  This indicates that while there are many packages out there, most packages are not building on the work of other packages.  This produces the unfortunate situation in which it seems that many package developers are recreating the work of other package developers.  I am not really sure if there is anything that can be done about this or if it really is an issue.

It does not bother me that many users recode similar or duplicate code because I think the coding of such code helps the user better understand the R system, the user's problem, and the user's solution.  There is however the issue that the more times a problem is coded, the more likely someone will code an error.  This beings us back to point 3 in which errors must be rigorously pursued and ruthlessly exterminated through use of an independent error detection system.

5 Insufficient Meta Package AnalysisA point that Kurt Hornik also raises is that there are a lot of R packages out there but not a lot of information about how those packages are being used.  In order to further this goal, it might be useful to build into future releases of R the option to report usage statistics on which packages and functions are being used in combination with which other packages.  Package developers might find such information useful when evaluating what functions to update.

R packages are installed into libraries, which are directories in the file system containing a subdirectory for each package installed there.

R comes with a single library, R_HOME/library which is the value of the R object ‘.Library’ containing the standard and recommended packages.

Both sites and users can create others and make use of them (or not) in an R session. At the lowest level ‘.libPaths()’ can be used to add paths to the collection of libraries or to report the current collection.

R will automatically make use of a site-specific library R_HOME/site-library if this exists (it does not in a vanilla R installation). This location can be overridden by setting ‘.Library.site’ in R_HOME/etc/Rprofile.site, or (not recommended) by setting the environment variable R_LIBS_SITE. Like ‘.Library’, the site libraries are always included into ‘.libPaths()’.

Users can have one or more libraries, normally specified by the environment variable R_LIBS_USER. This has a default value (to see it, use ‘Sys.getenv("R_LIBS_USER")’ within an R session), but that is only used if the corresponding directory actually exists (which by default it will not).

Both R_LIBS_USER and R_LIBS_SITE can specify multiple library paths, separated by colons (semicolons on Windows).

Another strength of R is static graphic which can be produced using ggplot2 package. It can produce publication-quality graphs, including mathematical symbols. Dynamic and interactive graphics are available through additional packages.

Packages allow specialized statistical techniques, graphic output (ggplot2), import/export capabilities, reporting tools (knitr, Sweave), etc. Packages are developed primarily in R. Sometimes C, C++,  Fortran are used. 

Other R package repositories include  R-forge and Bioconductor

There is also a community site for rating and reviewing all CRAN packages called Crantastic.

Language

Adapted from Programming in R Thomas Girke, UC Riverside

R is C style language that does not do a good job of enhancing C syntax and avoiding it shortcomings. It is stuck in 90 mentality and in comparison with Perl does not extend syntax much.

This is the dynamically typed language with fist class functions, closures, objects, vector operations, pass parameters by value. Has special values for variables such as NULL and NA. Everything is nullable.

R is an interpreted language; users typically access it through a command-line interpreter. If a user types "2+2" at the R command prompt and presses Enter, the computer replies with "4", as shown below:

> 2+2 
[1] 4

Variable names in R can contain dot character which serves the role similar to underscore (... is used to indicate a variable number of function arguments). R uses $ in a manner analogous to the way other languages use dot.

R has several one-letter reserved words: c, q, s, t, C, D, F, I, and T.

R's data structures include vectors, lists, matrices, arrays, data frames (list of vectors; similar to tables in a relational database). There is no scalar type in R. A scalar is represented as a vector with length one  The scalar data type was never a data structure of R. 

Vectors are one dimensional collections used to, most frequently, store one sort of data (Numbers, Text, ...).  Indices in R start at 1, not at 0. In this way R resembles FORTRAN.  x[1] is the first element of vector x. Vector is  an ordered collection of elements with no other structure. The length of a vector is the number of elements. Operations are applied componentwise. For example, given two vectors x and y of equal length, x*y would be the vector whose nth component is the product of the nth components of x and y. Also, log(x) would be the vector whose nth component is the logarithm of the nth component of x. Vectors are created using the c function. For example, p <- c(2,3,5,7) sets p to the vector containing the first four prime numbers.

R supports procedural programming with functions. A generic function acts differently depending on the type of arguments passed to it. In other words, the generic function dispatches the function (method) specific to that type of object. There is also OO system for R (actually two). 

R has a generic print() function that can print almost every type of object in R with a simple

print(objectname)

Overview of syntax.

Statistical features

R and its libraries implement a wide variety of statistical and graphical techniques, including linear and nonlinear modeling, classical statistical tests, time-series analysis, classification, clustering, and others. R is easily extensible through functions and extensions, and the R community is noted for its active contributions in terms of packages. There are some important differences, but much code written for S runs unaltered. Many of R's standard functions are written in R itself, which makes it easy for users to follow the algorithmic choices made.

R can link and call at run time C, C++, and Fortran code. Advanced users can write their own C, C++, Java, [NET or Python code to manipulate R objects directly.

Examples

Readers wishing to get a feel for R can start with the introductory session given in A sample session.

From Wikipedia:

Example 1[edit]

The following examples illustrate the basic syntax of the language and use of the command-line interface.

In R, the widely preferred assignment operator is an arrow made from two characters "<-", although "=" can be used instead.[26]

> x <- c(1,2,3,4,5,6) # Create ordered collection (vector)
> y <- x^2 # Square the elements of x
> print(y) # print (vector) y
[1] 1 4 9 16 25 36
> mean(y) # Calculate average (arithmetic mean) of (vector) y; result is scalar
[1] 15.16667
> var(y) # Calculate sample variance
[1] 178.9667
> lm_1 <- lm(y ~ x) # Fit a linear regression model "y = f(x)" or "y = B0 + (B1 * x)"
# store the results as lm_1
> print(lm_1) # Print the model from the (linear model object) lm_1

Call:

lm(formula = y ~ x)

Coefficients:

(Intercept) x
-9.333 7.000

> summary(lm_1) # Compute and print statistics for the fit # of the (linear model object) lm_1

Call:
lm(formula = y ~ x)
Residuals:
1 2 3 4 5 6
3.3333 -0.6667 -2.6667 -2.6667 -0.6667 3.3333
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -9.3333 2.8441 -3.282 0.030453 *
x 7.0000 0.7303 9.585 0.000662 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.055 on 4 degrees of freedom
Multiple R-squared: 0.9583, Adjusted R-squared: 0.9478
F-statistic: 91.88 on 1 and 4 DF, p-value: 0.000662
> par(mfrow=c(2, 2)) # Request 2x2 plot layout
> plot(lm_1) # Diagnostic plot of regression model

Diagnostic graphs produced by plot.lm() function. Features include mathematical notation in axis labels, as at lower left.

Example 2[edit]

Short R code calculating Mandelbrot set through the first 20 iterations of equation z = z² + c plotted for different complex constants c. This example demonstrates: use of community-developed external libraries (called packages), in this case caTools package handling of complex numbers multidimensional arrays of numbers used as basic data type, see variables C, Z and X.

library(caTools) # external package providing write.gif function
jet.colors <- colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan", "#7FFF7F",
"yellow", "#FF7F00", "red", "#7F0000"))
m <- 10000 # define size
C <- complex( real=rep(seq(-1.8,0.6, length.out=m), each=m ),
imag=rep(seq(-1.2,1.2, length.out=m), m ) )
C <- matrix(C,m,m) # reshape as square matrix of complex numbers
Z <- 0 # initialize Z to zero
X <- array(0, c(m,m,20)) # initialize output 3D array
for (k in 1:20) { # loop with 20 iterations
Z <- Z^2+C # the central difference equation
X[,,k] <- exp(-abs(Z)) # capture results
}
write.gif(X, "Mandelbrot.gif", col=jet.colors, delay=800)

"Mandelbrot.gif" – Graphics created in R with 14 lines of code in Example 2

Example 3[edit]

The ease of function creation by the user is one of the strengths of using R. Objects remain local to the function, which can be returned as any data type.[27] Below is an example of the structure of a function:

functionname <- function(arg1, arg2, ... ){ # declare name of function and function arguments
statements # declare statements
return(object) # declare object data type
}
sumofsquares <- function(x){ # a user-created function 
return(sum(x^2)) # return the sum of squares of the elements of vector x
}
> sumofsquares(1:3)
[1] 14

Top Visited
Switchboard
Latest
Past week
Past month

NEWS CONTENTS

Old News ;-)

[Sep 18, 2016] R Weekly

Sep 18, 2016 | tm.durusau.net
September 12th, 2016 R Weekly

A new weekly publication of R resources that began on 21 May 2016 with Issue 0 .

Mostly titles of post and news articles, which is useful, but not as useful as short summaries, including the author's name.

[Jun 10, 2015] The R Language The Good The Bad And The Ugly - John Cook

"...May be a bit old, but a good talk on the quirks and niceties of R"
Mar 27, 2013 | YouTube

Here's a description of John's talk from GOTO Aarhus 2012: R is a domain-specific language for analyzing data. Why does data analysis need its own DSL? What does R do well and what does it do poorly? How can developers take advantage of R's strengths and mitigate its weaknesses? This talk will give some answers to these questions.

Jesus M. Castagnetto

May be a bit old, but a good talk on the quirks and niceties of R

[Jun 09, 2015] The R Programming Language - Free Computer, Programming, Mathematics, Technical Books, Lecture Notes and Tutorials

Learning R and Perl - Stack Overflow

I can recommend Penn University's Introductory Course on R.

The ggplot chapter alone is worth reading - I found ggplot very confusing but this is a great explanation.

Getting Started with R – RStudio Support

> Garrett Grolemund,

New to R?

There are hundreds of websites that can help you learn the language. Here's how you can use some of the best to become a productive R programmer.

Start by downloading R and RStudio.

Learn the basics

Visit Try R to learn how to write basic R code. These interactive lessons will get you writing real code in minutes, and they'll tell you immediately when you go wrong.

Broaden your skills

Work through The Beginner's Guide to R by Computerworld Magazine. This 30 page guide will show you how to install R, load data, run analyses, make graphs, and more.

Practice good habits

Read the Google R Style Guide for advice on how to write readable, maintainable code. This is how other R users will expect your code to look when you share it.

Look up help

When you need to learn more about an R function or package, visit Rdocumentation.org, a searchable database of R documentation. You can search for R packages and functions, look at package download statistics, and leave and read comments about R functions.

Ask questions

Seek help at StackOverflow, a searchable forum of questions and answers about computer programming. StackOverflow has answered (and archived) over 40,000 questions related to R programming. You can browse StackOverflow's archives and see which answers have been upvoted by users, or you can ask your own R related questions and wait for a response.

If you a have question that is more about statistical methodology there are also plenty of R users active on the the CrossValidated Q&A community.

Keep tabs on the R community

Read R bloggers, a blog aggregator that reposts R related articles from across the web. A good place to find R tutorials, announcements, and other random happenings.

Deepen your expertise

Once you've gained some familiarity with R, The R Inferno provides an entertaining roadmap to some of the deeper subtleties of the language and how to work with it most effectively.

This blog post by Noam Ross also provides valuable advice for writing fast R code.

Got R down? Give Shiny a try

Now that you know R, work through our Shiny lessons to learn how to make interactive web apps with R.

Brought To You By the Letter R: Microsoft Acquiring Revolution Analytics

timothy from the interesting-choice-of-letter dept.

theodp writes Maybe Bill Gates' Summer Reading this year will include The Art of R Programming. Pushing further into Big Data, Microsoft on Friday announced it's buying Revolution Analytics, the top commercial provider of software and services for the open-source R programming language for statistical computing and predictive analytics. "By leveraging Revolution Analytics technology and services," blogged Microsoft's Joseph Sirosh, "we will empower enterprises, R developers and data scientists to more easily and cost effectively build applications and analytics solutions at scale." Revolution Analytics' David Smith added, "Now, Microsoft might seem like a strange bedfellow for an open-source company [RedHat:Linux as Revolution Analytics:R], but the company continues to make great strides in the open-source arena recently." Now that it has Microsoft's blessing, is it finally time for AP Statistics to switch its computational vehicle to R?

Recommended Links

Softpanorama hot topic of the month

Softpanorama Recommended

Top articles

Sites

Top articles

Sites

Documnetation

R The R Base Package

Youtube videos

R Learning Links (Rutgers University)
Guides and Tutorials
  • Starter Kit – UCLA Statistical Computing has compiled excellent overviews of not only R, but also, SAS, SPSS, and Stata. Class notes, learning modules, and downloadable books.
  • Cookbook for R - wiki style information
  • R Programming Wikibook - a practical guide to the R programming language.
  • R Tutorial Series - short tutorials on common topics.
  • R Videos – from Texas A&M, covers all the basics.
  • Manuals, FAQs, Listservs and more are available from http://www.r-project.org/. The R Reference Card is a quite handy summary.
  • Quick-R is a guide for experienced users of other stats packages like SAS, SPSS, or Stata.
  • Springer Use R! series (available from Springerlink) has many useful guides to using R in different fields
Searching for R on the Internet
More Information

Web resources

Problems with R



Etc

FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available in our efforts to advance understanding of environmental, political, human rights, economic, democracy, scientific, and social justice issues, etc. We believe this constitutes a 'fair use' of any such copyrighted material as provided for in section 107 of the US Copyright Law. In accordance with Title 17 U.S.C. Section 107, the material on this site is distributed without profit exclusivly for research and educational purposes.   If you wish to use copyrighted material from this site for purposes of your own that go beyond 'fair use', you must obtain permission from the copyright owner. 

ABUSE: IPs or network segments from which we detect a stream of probes might be blocked for no less then 90 days. Multiple types of probes increase this period.  

Society

Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers :   Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism  : The Iron Law of Oligarchy : Libertarian Philosophy

Quotes

War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda  : SE quotes : Language Design and Programming Quotes : Random IT-related quotesSomerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose BierceBernard Shaw : Mark Twain Quotes

Bulletin:

Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 :  Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method  : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law

History:

Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds  : Larry Wall  : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOSProgramming Languages History : PL/1 : Simula 67 : C : History of GCC developmentScripting Languages : Perl history   : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history

Classic books:

The Peter Principle : Parkinson Law : 1984 : The Mythical Man-MonthHow to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite

Most popular humor pages:

Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor

The Last but not Least


Copyright © 1996-2016 by Dr. Nikolai Bezroukov. www.softpanorama.org was created as a service to the UN Sustainable Development Networking Programme (SDNP) in the author free time. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License.

The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.

Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.

This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to make a contribution, supporting development of this site and speed up access. In case softpanorama.org is down you can use the at softpanorama.info

Disclaimer:

The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the author present and former employers, SDNP or any other organization the author may be associated with. We do not warrant the correctness of the information provided or its fitness for any purpose.

Last modified: September, 12, 2017