0% found this document useful (0 votes)
27 views13 pages

Asd

This document introduces logical operators in R, including equality (==), inequality (<, >, <=, >=), not equals (! =), AND (&, &&), and OR (|, ||) operators. It provides examples of using each operator to evaluate logical expressions and discusses how they work on vectors.

Uploaded by

didar kv
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views13 pages

Asd

This document introduces logical operators in R, including equality (==), inequality (<, >, <=, >=), not equals (! =), AND (&, &&), and OR (|, ||) operators. It provides examples of using each operator to evaluate logical expressions and discusses how they work on vectors.

Uploaded by

didar kv
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 13

R version 3.1.

2 (2014-10-31) -- "Pumpkin Helmet"


Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (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.

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.

> library(swirl)

| Hi! Type swirl() when you are ready to begin.

> swirl()

| Welcome to swirl!

| Please sign in. If you've been here before, use the same name as you did then. If
you
| are new, call yourself something unique.

What shall I call you? Johnny

| Please choose a course, or type 0 to exit swirl.

1: R Programming
2: Take me to the swirl course repository!

Selection: 1

| Please choose a lesson, or type 0 to return to course menu.

1: Basic Building Blocks 2: Workspace and Files


3: Sequences of Numbers 4: Vectors
5: Missing Values 6: Subsetting Vectors
7: Matrices and Data Frames 8: Logic
9: Functions 10: lapply and sapply
11: vapply and tapply 12: Looking at Data
13: Simulation 14: Dates and Times
15: Base Graphics

Selection: 8

| |
0%

| This lesson is meant to be a short introduction to logical operations in R.

...

|== |
2%
| There are two logical values in R, also called boolean values. They are TRUE and
| FALSE. In R you can construct logical expressions which will evaluate to either
TRUE
| or FALSE.

...

|=== |
4%

| Many of the questions in this lesson will involve evaluating logical expressions.
It
| may be useful to open up a second R terminal where you can experiment with some
of
| these expressions.

...

|===== |
6%

| Creating logical expressions requires logical operators. You're probably familiar


| with arithmetic operators like `+`, `-`, `*`, and `/`. The first logical operator
we
| are going to discuss is the equality operator, represented by two equals signs
`==`.
| Use the equality operator below to find out if TRUE is equal to TRUE.

>
> TRUE == true
Error: object 'true' not found
> TRUE == TRUE
[1] TRUE

| Your dedication is inspiring!

|====== |
8%

| Just like arithmetic, logical expressions can be grouped by parenthesis so that


the
| entire expression (TRUE == TRUE) == TRUE evaluates to TRUE.

...

|======== |
10%

| To test out this property, try evaluating (FALSE == TRUE) == FALSE .

> (FALSE == TRUE) == FALSE


[1] TRUE

| You are really on a roll!

|========= |
12%
| The equality operator can also be used to compare numbers. Use `==` to see if 6
is
| equal to 7.

> 6 == 7
[1] FALSE

| That's correct!

|=========== |
14%

| The previous expression evaluates to FALSE because 6 is less than 7. Thankfully,


| there are inequality operators that allow us to test if a value is less than or
| greater than another value.

...

|============ |
16%

| The less than operator `<` tests whether the number on the left side of the
operator
| (called the left operand) is less than the number on the right side of the
operator
| (called the right operand). Write an expression to test whether 6 is less than 7.

> 6 < 7
[1] TRUE

| You got it!

|============== |
18%

| There is also a less-than-or-equal-to operator `<=` which tests whether the left
| operand is less than or equal to the right operand. Write an expression to test
| whether 10 is less than or equal to 10.

> 10 <= 10
[1] TRUE

| That's a job well done!

|=============== |
20%

| Keep in mind that there are the corresponding greater than `>` and
| greater-than-or-equal-to `>=` operators.

...

|================= |
22%

| Which of the following evaluates to FALSE?

1: 7 == 7
2: 0 > -36
3: 6 < 8
4: 9 >= 10

Selection: 4

| That's the answer I was looking for.

|================== |
24%

| Which of the following evaluates to TRUE?

1: 9 >= 10
2: 7 == 9
3: -6 > -7
4: 57 < 8

Selection: 3

| You are quite good my friend!

|==================== |
25%

| The next operator we will discuss is the 'not equals' operator represented by `!
=`.
| Not equals tests whether two values are unequal, so TRUE != FALSE evaluates to
TRUE.
| Like the equality operator, `!=` can also be used with numbers. Try writing an
| expression to see if 5 is not equal to 7.

> 5 != 7
[1] TRUE

| You nailed it! Good job!

|===================== |
27%

| In order to negate boolean expressions you can use the NOT operator. An
exclamation
| point `!` will cause !TRUE (say: not true) to evaluate to FALSE and !FALSE (say:
not
| false) to evaluate to TRUE. Try using the NOT operator and the equals operator to
| find the opposite of whether 5 is equal to 7.

> !(5 == 7)
[1] TRUE

| You are doing so well!

|======================= |
29%

| Let's take a moment to review. The equals operator `==` tests whether two boolean
| values or numbers are equal, the not equals operator `!=` tests whether two
boolean
| values or numbers are unequal, and the NOT operator `!` negates logical
expressions
| so that TRUE expressions become FALSE and FALSE expressions become TRUE.

...

|======================== |
31%

| Which of the following evaluates to FALSE?

1: 9 < 10
2: !FALSE
3: !(0 >= -1)
4: 7 != 8

Selection: 3

| That's a job well done!

|========================== |
33%

| What do you think the following expression will evaluate to?: (TRUE != FALSE)
== !(6
| == 7)

1: TRUE
2: Can there be objective truth when programming?
3: %>%
4: FALSE

Selection: 1

| Excellent job!

|============================ |
35%

| At some point you may need to examine relationships between multiple logical
| expressions. This is where the AND operator and the OR operator come in.

...

|============================= |
37%

| Let's look at how the AND operator works. There are two AND operators in R, `&`
and
| `&&`. Both operators work similarly, if the right and left operands of AND are
both
| TRUE the entire expression is TRUE, otherwise it is FALSE. For example, TRUE &
TRUE
| evaluates to TRUE. Try typing FALSE & FALSE to how it is evaluated.

> FALSE & FALSE


[1] FALSE

| You are quite good my friend!

|=============================== |
39%

| You can use the `&` operator to evaluate AND across a vector. The `&&` version of
AND
| only evaluates the first member of a vector. Let's test both for practice. Type
the
| expression TRUE & c(TRUE, FALSE, FALSE).

> TRUE & c(TRUE, FALSE, FALSE)


[1] TRUE FALSE FALSE

| You're the best!

|================================ |
41%

| What happens in this case is that the left operand `TRUE` is recycled across
every
| element in the vector of the right operand. This is the equivalent statement as
| c(TRUE, TRUE, TRUE) & c(TRUE, FALSE, FALSE).

...

|================================== |
43%

| Now we'll type the same expression except we'll use the `&&` operator. Type the
| expression TRUE && c(TRUE, FALSE, FALSE).

> TRUE && c(true, FALSE, FALSE)


Error: object 'true' not found
> TRUE && c(TRUE, FALSE, FALSE)
[1] TRUE

| You nailed it! Good job!

|=================================== |
45%

| In this case, the left operand is only evaluated with the first member of the
right
| operand (the vector). The rest of the elements in the vector aren't evaluated at
all
| in this expression.

...

|===================================== |
47%

| The OR operator follows a similar set of rules. The `|` version of OR evaluates
OR
| across an entire vector, while the `||` version of OR only evaluates the first
member
| of a vector.

...

|====================================== |
49%

| An expression using the OR operator will evaluate to TRUE if the left operand or
the
| right operand is TRUE. If both are TRUE, the expression will evaluate to TRUE,
| however if neither are TRUE, then the expression will be FALSE.

...

|======================================== |
51%

| Let's test out the vectorized version of the OR operator. Type the expression
TRUE |
| c(TRUE, FALSE, FALSE).

> TRUE | c(TRUE, FALSE, FALSE)


[1] TRUE TRUE TRUE

| Excellent work!

|========================================= |
53%

| Now let's try out the non-vectorized version of the OR operator. Type the
expression
| TRUE || c(TRUE, FALSE, FALSE).

> TRUE || c(TRUE, FALSE, FALSE)


[1] TRUE

| That's a job well done!

|=========================================== |
55%

| Logical operators can be chained together just like arithmetic operators. The
| expressions: `6 != 10 && FALSE && 1 >= 2` or `TRUE || 5 < 9.3 || FALSE` are
perfectly
| normal to see.

...

|============================================ |
57%

| As you may recall, arithmetic has an order of operations and so do logical


| expressions. All AND operators are evaluated before OR operators. Let's look at
an
| example of an ambiguous case. Type: 5 > 8 || 6 != 8 && 4 > 3.9

> 5 > 8 || 6 != 7 && 4 > 3.9


[1] TRUE

| Not quite, but you're learning! Try again. Or, type info() for more options.

| See how the order of operations works by typing: 5 > 8 || 6 != 8 && 4 > 3.9

> 5 > 8 || 6 != 8 && 4 > 3.9


[1] TRUE

| That's correct!

|============================================== |
59%

| Let's walk through the order of operations in the above case. First the left and
| right operands of the AND operator are evaluated. 6 is not equal 8, 4 is greater
than
| 3.9, therefore both operands are TRUE so the resulting expression `TRUE && TRUE`
| evaluates to TRUE. Then the left operand of the OR operator is evaluated: 5 is
not
| greater than 8 so the entire expression is reduced to FALSE || TRUE. Since the
right
| operand of this expression is TRUE the entire expression evaluates to TRUE.

...

|=============================================== |
61%

| Which one of the following expressions evaluates to TRUE?

1: TRUE && 62 < 62 && 44 >= 44


2: 99.99 > 100 || 45 < 7.3 || 4 != 4.0
3: FALSE || TRUE && FALSE
4: TRUE && FALSE || 9 >= 4 && 3 < 6

Selection: 2

| Not exactly. Give it another go.

| Try to evaluate each expression in isolation and build up an answer.

1: TRUE && 62 < 62 && 44 >= 44


2: 99.99 > 100 || 45 < 7.3 || 4 != 4.0
3: TRUE && FALSE || 9 >= 4 && 3 < 6
4: FALSE || TRUE && FALSE

Selection: 4

| That's not exactly what I'm looking for. Try again.

| Try to evaluate each expression in isolation and build up an answer.

1: TRUE && 62 < 62 && 44 >= 44


2: TRUE && FALSE || 9 >= 4 && 3 < 6
3: FALSE || TRUE && FALSE
4: 99.99 > 100 || 45 < 7.3 || 4 != 4.0

Selection: 3

| Not exactly. Give it another go.

| Try to evaluate each expression in isolation and build up an answer.

1: TRUE && FALSE || 9 >= 4 && 3 < 6


2: TRUE && 62 < 62 && 44 >= 44
3: FALSE || TRUE && FALSE
4: 99.99 > 100 || 45 < 7.3 || 4 != 4.0

Selection: 1

| You're the best!

|================================================= |
63%

| Which one of the following expressions evaluates to FALSE?

1: !(8 > 4) || 5 == 5.0 && 7.8 >= 7.79


2: FALSE || TRUE && 6 != 4 || 9 > 4
3: FALSE && 6 >= 6 || 7 >= 8 || 50 <= 49.5
4: 6 >= -9 && !(6 > 7) && !(!TRUE)

Selection: 1

| You're close...I can feel it! Try it again.

| Try to evaluate each expression in isolation and build up an answer.

1: FALSE && 6 >= 6 || 7 >= 8 || 50 <= 49.5


2: FALSE || TRUE && 6 != 4 || 9 > 4
3: !(8 > 4) || 5 == 5.0 && 7.8 >= 7.79
4: 6 >= -9 && !(6 > 7) && !(!TRUE)

Selection: 3

| Not quite! Try again.

| Try to evaluate each expression in isolation and build up an answer.

1: FALSE && 6 >= 6 || 7 >= 8 || 50 <= 49.5


2: 6 >= -9 && !(6 > 7) && !(!TRUE)
3: !(8 > 4) || 5 == 5.0 && 7.8 >= 7.79
4: FALSE || TRUE && 6 != 4 || 9 > 4

Selection: 1

| You nailed it! Good job!

|================================================== |
65%

| Now that you're familiar with R's logical operators you can take advantage of a
few
| functions that R provides for dealing with logical expressions.

...

|==================================================== |
67%

| The function isTRUE() takes one argument. If that argument evaluates to TRUE, the
| function will return TRUE. Otherwise, the function will return FALSE. Try using
this
| function by typing: isTRUE(6 > 4)
> isTRUE(6 > 4)
[1] TRUE

| Keep working like that and you'll get there!

|====================================================== |
69%

| Which of the following evaluates to TRUE?

1: isTRUE(3)
2: !isTRUE(4 < 3)
3: isTRUE(NA)
4: isTRUE(!TRUE)
5: !isTRUE(8 != 5)

Selection: 2

| All that hard work is paying off!

|======================================================= |
71%

| The function identical() will return TRUE if the two R objects passed to it as
| arguments are identical. Try out the identical() function by typing:
| identical('twins', 'twins')

> identical('twins', 'twins')


[1] TRUE

| Great job!

|========================================================= |
73%

| Which of the following evaluates to TRUE?

1: !identical(7, 7)
2: identical(4, 3.1)
3: identical('hello', 'Hello')
4: identical(5 > 4, 3 < 3.1)

Selection: 4

| You nailed it! Good job!

|========================================================== |
75%

| You should also be aware of the xor() function, which takes two arguments. The
xor()
| function stands for exclusive OR. If one argument evaluates to TRUE and one
argument
| evaluates to FALSE, then this function will return TRUE, otherwise it will return
| FALSE. Try out the xor() function by typing: xor(5 == 6, !FALSE)

> xor(5 == 6, !FALSE)


[1] TRUE
| Your dedication is inspiring!

|============================================================ |
76%

| 5 == 6 evaluates to FALSE, !FALSE evaluates to TRUE, so xor(FALSE, TRUE)


evaluates to
| TRUE. On the other hand if the first argument was changed to 5 == 5 and the
second
| argument was unchanged then both arguments would have been TRUE, so xor(TRUE,
TRUE)
| would have evaluated to FALSE.

...

|============================================================= |
78%

| Which of the following evaluates to FALSE?

1: xor(!!TRUE, !!FALSE)
2: xor(4 >= 9, 8 != 8.0)
3: xor(!isTRUE(TRUE), 6 > -1)
4: xor(identical(xor, 'xor'), 7 == 7.0)

Selection: 4

| Not quite right, but keep trying.

| For xor() to evaluate to TRUE, one argument must be TRUE and one must be FALSE.

1: xor(!!TRUE, !!FALSE)
2: xor(4 >= 9, 8 != 8.0)
3: xor(!isTRUE(TRUE), 6 > -1)
4: xor(identical(xor, 'xor'), 7 == 7.0)

Selection: 2

| All that hard work is paying off!

|=============================================================== |
80%

| For the next few questions, we're going to need to create a vector of integers
called
| ints. Create this vector by typing: ints <- sample(10)

> ints <- sample(10)

| You got it right!

|================================================================ |
82%

| Now simply display the contents of ints.

> ints
[1] 6 3 9 2 8 1 7 5 10 4
| That's correct!

|================================================================== |
84%

| The vector `ints` is a random sampling of integers from 1 to 10 without


replacement.
| Let's say we wanted to ask some logical questions about contents of ints. If we
type
| ints > 5, we will get a logical vector corresponding to whether each element of
ints
| is greater than 5. Try typing: ints > 5

> ints > 5


[1] TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE

| Keep up the great work!

|=================================================================== |
86%

| We can use the resulting logical vector to ask other questions about ints. The
| which() function takes a logical vector as an argument and returns the indices of
the
| vector that are TRUE. For example which(c(TRUE, FALSE, TRUE)) would return the
vector
| c(1, 3).

...

|===================================================================== |
88%

| Use the which() function to find the indices of ints that are greater than 7.

> which(ints > 7)


[1] 3 5 9

| Perseverance, that's the answer.

|====================================================================== |
90%

| Which of the following commands would produce the indices of the elements in ints
| that are less than or equal to 2?

1: ints <= 2
2: ints < 2
3: which(ints < 2)
4: which(ints <= 2)

Selection: 4

| Excellent job!

|======================================================================== |
92%
| Like the which() function, the functions any() and all() take logical vectors as
| their argument. The any() function will return TRUE if one or more of the
elements in
| the logical vector is TRUE. The all() function will return TRUE if every element
in
| the logical vector is TRUE.

...

|========================================================================= |
94%

| Use the any() function to see if any of the elements of ints are less than zero.

> any(ints < 0)


[1] FALSE

| Your dedication is inspiring!

|=========================================================================== |
96%

| Use the all() function to see if all of the elements of ints are greater than
zero.

> all(ints > 0)


[1] TRUE

| You're the best!

|============================================================================ |
98%

| Which of the following evaluates to TRUE?

1: all(ints == 10)
2: all(c(TRUE, FALSE, TRUE))
3: any(ints == 10)
4: any(ints == 2.5)

Selection: 3

| You got it!

|==============================================================================|
100%

| That's all for this introduction to logic in R. If you really want to see what
you
| can do with logic, check out the control flow lesson!

...

| Are you currently enrolled in the Coursera course associated with this lesson?

1: Yes
2: No

Selection: No

You might also like