R vs. Python: Syntax Comparison

 

R

Python

 

R

Python

Arithmetic operators

x + y x - y x * y x / y x ^ y
x + y x - y x * y x / y x ** y

The only difference is that R uses ^ for exponentiation, while Python uses **.

Comparison operators

# R and Python x == y x != y x > y x < y x >= y x <= y

No differences here.

Logical operators

Python doesn’t have built-in logical operations for vectors.

numpy is a popular library for this purpose, but it’s not as clean as R’s syntax.

Assignment operator

name <- "John Doe"

name = "John Doe"

R does accept the = syntax for assignment. However, it’s non-idiomatic and can lead to unexpected errors.

For example,

To avoid confusion, always use <- for assignment, and use = for passing arguments within function calls.

Ranges

Ouch. Python’s code is not only longer, but it excludes the final number.
range(1, 11) creates a range object in Python, which represents the numbers 1 through 10.

list(range(1, 11)) creates a list object in Python, which represents [1, 2, 3, … 10]
Both function similarly to the 1:10 vector in R. However, you need to change a range to a list in order to output it.

Conditional Statements

R requires the condition to be in parentheses. That would also work in Python, but it’s not required.

R begins a block statement with an opening curly brace ({), and it ends it with a closing curly brace (}).

Python is the oddball here, using a colon (:) to begin a block statement. It then uses indentation for the block’s statements. To end a block, you stop indenting.

This can take some getting used to, because very few computer languages have similar syntax.

Note that the recommended indentation for Python is 4 spaces, but consistency is all that matters.

For Loops

Note the similarity to the if statement comparisons above – particularly the absence of parentheses in the iteration expression, and the block syntax.

Functions

In Python, the return statement does not require parentheses, unlike R.

Indexing

R uses 1-based indexing.

Python uses 0-based indexing.

R is actually the oddball here. Most modern languages use 0-based indexing.

Slicing

Because Python uses 0-based indexing, the second element is at position 1 instead of 2.

Python supports similar start:end syntax to R. However, the end number is non-inclusive, meaning the slice stops just before the end index

Comments

No difference.

Libraries

For data manipulation and geospatial analysis, R and Python rely on external libraries.

You can alias libraries in Python using as, which simply saves typing when calling them in your program.

You can selectively import functions from a Python library using from. To do the same in R you need to use ::, such as dplyr::select().