# 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.

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

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

## Arithmetic operation

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

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

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

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

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

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

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

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

#### R

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