Memo for Rewriting Code in Python and R (Basic Edition)

2023年7月31日

This is a basic guide for converting memo between Python and R.
In recent years, Python and R have become extremely popular programming languages in the fields of data analysis and machine learning. Each language has its own strengths and differences in usability and syntax. However, to achieve the same goal, you can write similar code in both languages. Additionally, since R is specialized for programming in statistical analysis, there are abundant books available in that field. I believe that rewriting programs written in R into Python can also contribute to learning the language. This compilation was created with the purpose of serving as a reference table and does not provide detailed explanations of the languages.




Variable

Python R
>>> x=3
>>> y=2
>>> x+y
5
> x <- 3
> y <- 2
> x+y
[1] 5

String

Python R
>>> x="Hello"
>>> x
'Hello’
> x <- “Hello"
> x
[1] “Hello"

 

Arithmetic operation

Addition

Python R
>>> 3+2
5
> 3+2
[1] 5

Subtraction

Python R
>>> 3-2
1
> 3-2
[1] 1

Multiplication

Python R
>>> 3*2
6
> 3*2
[1] 6

Division

Python R
>>> 3/2
1.5
> 3/2
[1] 1.5

Exponentiation

Python R
>>> 3**2
9
> 3**2
[1] 9

Modulo

Python R
>>> 5%3
2
> 5%%3
[1] 2

Factorial

Python R
>>> import math
>>> math.factorial(5)
120
> factorial(5)
[1] 120


※Handling exponential notation in R.

In R, numbers with a large number of digits are displayed in exponential notation by default. To disable this, you can use the options(scipen=**) function to set the desired value.
> 100000
[1] 1e+05

options(scipen=10)
> 100000
[1] 100000

Comparison operators

Python R
>>> 3 == 3
True
> 3 == 3
[1] TRUE
>>> 3 != 2
True
> 3 != 2
[1] TRUE
>>> 3 > 2
True
> 3 > 2
[1] TRUE
>>> 3 < 2
False
> 3 < 2
[1] FALSE
>>> 3 >= 3
True
> 3 >= 3
[1] TRUE
>>> 3 <= 2
False
> 3 <= 2
[1] FALSE
>>> x = [1,2,3,4,5]
>>> 3 in x
True
>>> 6 not in x
True
> x <- c(1,2,3,4,5)
> 3 %in% x
[1] TRUE
# not in N/A

 

Boolean operators

Python R
>>> x = 10
>>> bool(x)
True
>>> x = 0
>>> bool(x)
False
N/A

 

Lists (vectors in R)

Python R
>>> list1 = (1,2,3,4,5)
>>> list1
(1, 2, 3, 4, 5)
>>> list1[0]
1
> list1 <- c(1,2,3,4,5)
> list1
[1] 1 2 3 4 5
> list1[1]
[1] 1
>>> import numpy as np
>>> list1 = np.array([1,2,3,4,5])
>>> list1
array([1, 2, 3, 4, 5])
>>> list1[0]
1

 

Dictionary (list in R)

Python R
>>> fruit = {“Apple":250, “Orange":200, “Melon":500}
>>> fruit
{'Apple’: 250, 'Orange’: 200, 'Melon’: 500}
>>> fruit[“Apple"]
250
> fruit <- list(Apple=250, Orange=200, Melon=500)
> fruit
$Apple
[1] 250
$Orange
[1] 200
$Melon
[1] 500
> fruit[“Apple"]
$Apple
[1] 250

 

Functions

Python R
>>> def myfunc(x, y):
    return x + y

>>> myfunc(3,2)
5
> myfunc <- function(x,y){
return (x + y)
}
> myfunc(3,2)
[1] 5

 

If statement

Python

total =100

if total >= 100:
    print("100 or more")
elif total >= 50:
    print("Less than 100 More than 50")
else:
    print("Less than 50")

R

total <- 100 

if(total >= 100){
    print("100 or more")
}else if(total >= 50){
    print("Less than 100 More than 50")
}else{
    print("Less than 50")
}

 

Switch statement

R

fruit <- c("Apple","Orange","Melon","Grape","Pineapple")
val <- sample(fruit, size=1)
switch(val,
	"Apple" = print("It's an apple"),
	"Orange" = print("It's an orange"),
	"Melon" = print("It's a melon"),
	print("Other fruit")
)

Python

From Python 3.10 onwards, the match~case construct, which is equivalent to a switch statement, has been introduced.

import random
fruit=["Apple","Orange","Melon","Grape","Pineapple"]
val = (random.choice(fruit))
match val:
	case("Apple"):
		print("It's an apple")
	case("Orange"):
		print("It's an orange")
	case("Melon"):
		print("It's a melon")
	case _:
		print(“Other fruit")

Python

Until Python 3.9, you can use if-elif-else as an alternative.

import random
fruit=["Apple","Orange","Melon","Grape","Pineapple"]
val = (random.choice(fruit)) # Select a value randomly from the fruit list.
if val == "Apple":
    print("It's an apple")
elif val == "Orange":
    print("It's an orange")
elif val == "Melon":
    print("It's a melon")
else:
    print(“Other fruit")

 

Logical operators

Python

and, or, not

age = 6
height = 130

# Age is 6 or older and height is 120cm or taller.
if(6 <= age and 120 <= height):
    print("You can board.")
else:
    print("You cannot board.")

# Age is 6 or older, or height is 120cm or taller.
if(6 <= age or 120 <= height):
    print("You can board.")
else:
    print(“You cannot board.")

# The person is not 6 years old.
if not(age == 6):
    print("Not 6 years old.")
else:
    print("6 years old.")

R

&, |, !

age <- 6
height <- 120

# Age is 6 or older and height is 120cm or taller.
if(6 <= age & 120 <= height){
    print("You can board.")
}else{
    print("You cannot board.")
}

# Age is 6 or older, or height is 120cm or taller.
if(6 <= age | 120 <= height){
    print("You can board.")
}else{
    print("You cannot board.")
}

# The person is not 6 years old.
if (!6 == age){
    print("Not 6 years old.")
}else{
    print("6 years old.")
}

 

for loop

Python

fruit=[“Apple","Orange","Melon","Grape","Pineapple"]

for val in fruit:
	print(val)

for val in fruit:
    if val == "Melon":
        break
    print(val)

R

fruit <- c("Apple","Orange","Melon","Grape","Pineapple")

for(val in fruit){
	print(val)
}

for(val in fruit){
    if(val=="Melon"){
	break
    }
    print(val)
}

for(val in fruit){
    if(val=="Melon"){
	next
    }
    print(val)
} 

 

while loop

Python

num=1
while num<10:
    print(num)
    num += 1

R

num <- 1
while(num < 10){
    print(num)
    num = num+1
}