print("Hello, World!")
#cat("\nWelcome to R Programming Language ")

if (FALSE) {
    'This is a demo for multi-line comments and it should be put inside either and
      single OR double quot'
}

myString <- "string in r programming"
print(myString)



#######################################################################
#Data Types in R 
#logical (true or false)
l <- TRUE
print(class(l))

#numeric 
n <- 23.7
print(class(n))

#integer
i <- 2L
print(class(i))

#complex number
c <- 2+3i
print(class(c))

#character
ch <- "TRUE"
print(class(ch))

#########################################################################33
#create a vector
fruits <- c('apple', 'orange', 'grapes', 'mango')
print(fruits)
#check the data type use 
print(class(fruits))

#creating a list
#c is a function which lets us combine elements into a vector
list_r <- list(c(1, 2, 5), 12.4, 'sin')
print(list_r)
print(class(list_r))

#create a matrix
M = matrix(c('s', 'a', 'e', 't', 'w', 'a'), nrow=3, ncol=2, byrow=TRUE)
print(M)
print(class(M))

#create an array
arr <- array(c('green', 'red'), dim=c(3,3,2))
print(arr)
##################################################################################
#factor in r
#factor()
x <- c("Banana", "Apple", "Pineapple", "Banana", "Apple")
print(x)
Flavors <- factor(x)
#print(Flavors)
print(class(Flavors))

##################################################################################
#create a DataFrame
BMI <- data.frame(
  names= c('Matthew', 'Alice', 'Nazim'),
  gender= c('male', 'female', 'male'),
  height= c(176, 165.2, 172),
  age = c(19, 20, 34)
)
print(BMI)

###################################################################################
#variables
#Assignment using equal operator 
var.1 = c(0,1,2,3)
#Assignment using leftward operator
var.2 = c('learn', 'R')
#Assignment using forward operator
c(TRUE, 1) -> var.3
#var.3 <- c(TRUE, 1) means the same thing as the line above
print(var.1)
cat('var.1 is ', var.1, '\n')
cat('var.2 is ', var.2, '\n')
cat('var.3 is ', var.3, '\n')

#how to check variables
#character
var_x <- "Hello"
cat("The class of var_x is ",class(var_x),"\n")
#numeric
var_x <- 34.5
cat("Now the class of var_x is ",class(var_x),"\n")
#integer
var_x <- 27L
cat("Next the class of var_x becomes ",class(var_x),"\n")

#Finding variables
#print(ls())
print(ls(pattern="var"))
print(ls(all.name=TRUE))

#Deleting variables
rm(var.3)
#print(var.3)

rm(list=ls())
print(ls())
######################################################################################
#Operators in R
a = c(2, 3.3, 1.5)
b = c(2, 4.5, 6)
sum = a+b
print(sum)

sub = a-b
cat('the subtraction of a and b is: ', sub, '\n')

mul = a*b
print(mul)

div = a/b
print(div)

rem = a%%b
print(rem)

exp = a^b
print(exp)

#Relational Operators [<, >, ==, <=, >=]
print(a<=b)

#Colon Operators {display the range}
v <- 2:10
print(v)
#######################################################################################
#Decision Making in R --> Conditions using if-else
x <- 20
if(is.integer(x)){
  print('x is an integer')
}else{
  print('x is not an integer')
}

#Repeat loop
v <- c('learn', 'loop')
count <- 5
repeat{
  print(v)
  count <- count + 1
  if(count>10){
    break
    
  }
  
}

#While loop
print('While loop')
v <- c("Hello", "while loop")
count <- 2
while(count<7){
  print(v)
  count <- count + 1
}

#For loop
v <- LETTERS[1:26]
for(i in v){
  print(i)
}

#################################################################################
#using BREAK statement to end loop
x <- 1:5
for (val in x) 
{
 if (val == 3)
  {
  break
  } #END If
 print(val) 
} #END For
cat("==============================================\n")
#using NEXT statement to skip loop step
x <- 1:5
for (val in x) 
{
 if (val == 3)
 {
  next
 } #END If
 print(val)
} #END For
###################################################################################
#Create a function to print squares in sequence
new.function <- function(a){
  for(i in 1:a){
    b <- i^3
    print(b)
  }
}
new.function(5)

#example2 --> function
new.function <- function(a, b, c){
  result <- a*b*c
  print(result)
}

#call the function
new.function(a=2, b=3, c=4)
###############################################################################

#install packages in R
#install.packages("XML")

##############################################################################

#Data Reshaping
#create vector objects
city <- c("Sydney", "Melbourne", "Canberra", "Perth")
state <- c("NSW", "VIC", "ACT", "WA")
zipcode <- c(2000, 2600, 3000, 5000)
#combine the three vectors into dataframe
addresses <- cbind(city, state, zipcode)
#print(addresses)

#print a header
cat("# # # # The First data frame\n")
print(addresses)

#create another dataframe
new.address <- data.frame(
  city = c("Darwin", "Brisbane", "Adelaide", "Hobert"),
  state = c("NT", "QLD", "SA", "TAS"),
  zipcode = c(4000, 5000, 8000, 7000),
  stringsAsFactors =FALSE
)

#print a header
cat("# # # # The Second data frame\n")
print(addresses)

#Print the data frame
print(new.address)

#combine all rows in both dataframes
all.addresses <- rbind(addresses, new.address)
print(all.addresses)
 

R Language Online Compiler

Write, Run & Share R Language code online using OneCompiler's R Language online compiler for free. It's one of the robust, feature-rich online compilers for R language, running on the latest version 3.4. Getting started with the OneCompiler's R Language compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as R and start coding.

About R

R is very popular for data analytics which was created by Ross Ihaka and Robert Gentleman in 1993. Many big companies like Google, Facebook, Airbnb etc uses this language for data analytics. R is good for software developers, statisticians and data miners.

Key Features

  • Interpreted programming language(no compilation required)
  • provides highly extensible graphical techniques.
  • Good community support
  • Free and open-source
  • Handles data very effectively.

Syntax help

Data Types

Data typeDescriptionUsage
NumericTo represent decimal valuesx=1.84
IntegerTo represent integer values, L tells to store the value as integerx=10L
ComplexTo represent complex valuesx = 10+2i
LogicalTo represent boolean values, true or falsex = TRUE
CharacterTo represent string valuesx <- "One compiler"
rawHolds raw bytes

Variables

Variables can be assigned using any of the leftward, rightward or equal to operator. You can print the variables using either print or cat functions.

var-name = value
var-name <- value
value -> var-name

Loops

1. IF Family:

If, If-else, Nested-Ifs are used when you want to perform a certain set of operations based on conditional expressions.

If

if(conditional-expression){    
    #code    
} 

If-else

if(conditional-expression){  
    #code if condition is true  
} else {  
    #code if condition is false  
} 

Nested-If-else

if(condition-expression1) {  
    #code if above condition is true  
} elseif(condition-expression2){  
    #code if above condition is true  
}  
elseif(condition-expression3) {  
    #code if above condition is true  
}  
...  
else {  
    #code if all the conditions are false  
}  

2. Switch:

Switch is used to execute one set of statement from multiple conditions.

switch(expression, case-1, case-2, case-3....)   

3. For:

For loop is used to iterate a set of statements based on a condition.

for (value in vector) {  
  # code  
} 

4. While:

While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.

while(condition) {  
 # code 
}  

5. Repeat:

Repeat is used tyo iterate a set of statements with out any condition. You can write a user-defined condition to exit from the loop using IF.

repeat {   
   #code   
   if(condition-expression) {  
      break  
   }  
} 

Functions

Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity.

How to define a Function

func-name <- function(parameter_1, parameter_2, ...) {  
   #code for function body   
}  

How to call a Function

function_name (parameters)

Vectors

Vector is a basic data strucre where sequence of data values share same data type.

For example, the below statement assigns 1 to 10 values to x.
You can also use se() function to create vectors.

x <- 1:10
#using seq() function
 x <- seq(1, 10, by=2)

the above statement prints the output as [1] 1 3 5 7 9.