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

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 }