In my last blog Beginner's guide to R, I have written about the data types, variable, arithmetic and logical operations and introduction to data objects such as vector, matrix and data frames. In this blog I will discuss about vectors in details.

Vector is basic data object in R. It is one dimensional array which can hold data of same type of elements. There are six different type of Vectors.

- Logical
- Integer
- Double
- Character
- Complex
- Raw

Vectors can be created by using c() function having one or more elements separated by comma.

# Create Logical vector

c(TRUE, FALSE, TRUE)

# Create numeric vector

c(77, 80, 69)

# Create Double vector

c(77.5, 80.5, 69.5)

# Create Character vector

c("John", "Ravi", "Samual")

# Create complex vector

C(2+2i, 3+3i, 4+4i)

# Create Raw vector

charToRaw('hello')

Numerical vectors can also be created using colon or seq operator

# Create numeric vector using colon

numColonVector <- 1:10

print(numColonVector)

# Create numeric vector using seq

numSeqVector <- seq(1,10, by = 2)

print(numSeqVector)

If you execute these you will get output as

[1] 1 2 3 4 5 6 7 8 9 10

[1] 1 3 5 7 9**Naming a Vector**

It is very essentials to have clear view of data. In vector c(77,80,69,81) we should know what these values are representing, are they simple numbers, marks of students, etc. Let’s say they are marks of students but it is hard to say 80 are marks in English or Ravi gets 80 marks in English. So to get clear view of data we can give name to element of vector using names() function.

Let’s say 77, 80, 69 are marks obtained by "John”, Ravi" and "Samual" in English

# Create vector with marks in English

MarksInEnglish <- c(77, 80, 69)

# Create vector for Student’s name

Students <- c("John", "Ravi", "Samual")

# Assign names to vector elements

names(MarksInEnglish) <- Students

# We can also write above command without creating student vector

names(MarksInEnglish) <- c("John", "Ravi", "Samual")

# Print vector

MarksInEnglish

Above code will give result as

John Ravi Samual

77 80 69

**Vector selection**

We can select any specific element or slice of vector using vector index.

# Create vector

MarksInEnglish <- c(77, 80, 69, 80, 59, 40, 100)

Students <- c("John", "Ravi", "Samual", "Nick", "Das", "Jack", "Sam")

names(MarksInEnglish) <- Students

# Retrieve value by name of element

MarksInEnglish ["Samual"]

Result will be 69

# Retrieve value by index of element

MarksInEnglish [3]

Result will be 69

Where 3 is index value for vector MarksInEnglish.

**Negative index**

We can assign negative index to exclude value of vector.

# Exclude second value from vector

MarksInEnglish [-2]

Result will be 77, 69,80,59,40,100

-2 index will excludes Ravi’s marks from output.

**Out-of-Range**

If the index is out of range it will give you value as “NA”

# Get 10th element of vector

MarksInEnglish [10]

Result will be NA

**Index as Logical TRUE/FALSE**

In place of index logical values can be used to get the elements

MarksInEnglish[c( TRUE ,TRUE ,FALSE ,TRUE ,FALSE ,FALSE ,TRUE)]

Result will be

John Ravi Nick Sam

77 80 80 100

**Slicing of vector**

Slicing can be done by specifying the index’s or names or by specifying the range of index.

If we want to retrieve slice of vector with first, third and fourth element

MarksInEnglish[c(1,3,4)]

Result will be

John Samual Nick

77 69 80

Slicing using names of vector

MarksInEnglish[c("Jack","Ravi")]

Result will be

Jack Ravi

40 80

MarksInEnglish[c("Ravi","Nick")]

Result will be

Ravi Nick

80 80

Slicing vector by assigning range of indexes. In below example vector range for 1 to 4 is specified.

MarksInEnglish[c(1:4)]

Result will be

John Ravi Samual Nick

77 80 69 80

**Combining vectors**

We can combine two vectors using c() function.

# create vector with marks in English

MarksInEnglish <- c(77, 80, 69)

# create vector with grade in Painting

GradeInPenting <- c("A","B+","A+")

# create vector for Student’s name

Students <- c("John", "Ravi", "Samual")

# assign names to vector elements

names(MarksInEnglish) <- Students

names(GradeInPenting) <- Students

c(GradeInPenting,marksInEnglish)

Result will be

John Ravi Samual john Ravi Samual

"A" "B+" "A+" "77" "80" "69"

In above example c(GradeInPenting,marksInEnglish) combine two vectors into one vector.

One important point in combining vector is you can see that all elements are converted in character string so as to maintain same primitive data types for each element.

**Arithmetic operations**

We can do different arithmetic operations on vectors. These operations are performed member by member.

# create vector with marks in English

MarksInEnglish <- c(77, 80, 69)

# create vector with marks in Science

MarksInScience <- c(90, 87, 62)

# create vector for Student’s name

Students <- c("John", "Ravi", "Samual")

# assign names to vector elements

names(MarksInEnglish) <- Students

names(MarksInScience) <- Students

MarksInEnglish +MarksInScience

Result will be

John Ravi Samual

167 167 131

In above example we are adding marks in English and Science of each students. 77 +90 = 167 are the marks obtained by John, 80 + 87 = 167 marks obtained by Ravi and 69 + 62 =131 marks obtained by Samual.

If the length of vector is not equal then shortest vector will be reused to match the longer vector and is called Recycling.

# vector with 2 elements

aVector <- c(10,20)

# vector with 5 elements

bVector <- c(100,200,300,400,500)

aVector+bVector

Result will be

110 220 310 420 510

Warning message:

In aVector + bVector

longer object length is not a multiple of shorter object length

Here 10+100 =110, 20+200 =220, 10+300 = 310, 20+400 =420, 10+500=510. If shorter vector is not in multiple of longer one we get warning message.

bVector <- c(100,200,300,400)

aVector+bVector

Result will be

110 220 310 420

We can do arithmetic operations between vector and numeric value. In below example numeric value 10 gets added to each element of vector.

bVector <- c(100,200,300,400,500)

bVector +10

Result will be

110 210 310 410 510

**Logical Operation**

Logical operations can be perform on vector. For ex. If we want to find out how many students are having marks greater than 75.

# create vector

MarksInEnglish <- c(77, 80, 69,80,59,40,100)

Students <- c("John","Ravi",”Samual","Nick","Das","Jack","Sam")

names(MarksInEnglish) <- Students

MarksInEnglish >75

Result will be

John Ravi Samual Nick Das Jack Sam

TRUE TRUE FALSE TRUE FALSE FALSE TRUE

In summary Vectors are basic data storing one-dimensional array with elements of same type of elements. We can execute various commands to perform various operations and get desired data. Hope you will like this blog and will give your valuable feedback.