Python、R言語の書き換えメモ(基礎編)
Python、R言語の書き換え(変換)メモの基礎編です。
近年、データ分析や機械学習の分野において、PythonとR言語は非常に人気のあるプログラミング言語です。両言語はそれぞれ得意な分野があり、使い勝手や文法にも違いがあります。しかし、同じ目的を達成するためには、両言語で似たようなコードを書くことができます。またR言語は統計解析のプログラミングに特化した仕様になっているので、その分野の書籍が豊富にあります。R言語で書かれたプログラムをPythonに書き換えたりするのは言語の習得にも繋がるのではないかと思います。言語の細かい説明はしてません、対応表として使うことを目的としてまとめました。
変数
| 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"  | 
算術演算
加算
| 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  | 
階乗
| Python | R言語 | 
|---|---|
| >>> import math >>> math.factorial(5) 120  | 
> factorial(5) [1] 120  | 
※R言語の指数表示対策
R言語では桁数の大きな数はデフォルトでは指数表示になります
これを解除する場合はoptions(scipen=**)関数で設定します。
> 100000
[1] 1e+05
options(scipen=10)
> 100000
[1] 100000
比較演算子
| 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は無し  | 
ブール演算子
| Python | R言語 | 
|---|---|
| >>> x = 10 >>> bool(x) True >>> x = 0 >>> bool(x) False  | 
N/A | 
リスト、(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  | 
ディクショナリー、(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  | 
関数
| 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 条件文
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 分岐文
R言語
fruit <- c("Apple","Orange","Melon","Grape","Pineapple")
val <- sample(fruit, size=1)
switch(val,
	"Apple" = print("リンゴです"),
	"Orange" = print("オレンジです"),
	"Melon" = print("メロンです"),
	print("それ以外です")
)
Python
Python 3.10以降からswitchに相当するmatch~caseが導入されました。
import random
fruit=["Apple","Orange","Melon","Grape","Pineapple"]
val = (random.choice(fruit))
match val:
	case("Apple"):
		print("リンゴです")
	case("Orange"):
		print("オレンジです")
	case("Melon"):
		print("メロンです")
	case _:
		print(“それ以外のフルーツです")
Python
Python 3.9まではif~else ifで代替する
import random
fruit=["Apple","Orange","Melon","Grape","Pineapple"]
val = (random.choice(fruit)) #fruitリストからランダムに値を選ぶ
if val == "Apple":
    print("リンゴです")
elif val == "Orange":
    print("オレンジです")
elif val == "Melon":
    print("メロンです")
else:
    print(“それ以外のフルーツです")
論理演算子
Python
and, or, not
age = 6
height = 130
# 6歳以上かつ(and)身長120cm以上
if(6 <= age and 120 <= height):
    print("乗車できます")
else:
    print("乗車できません")
# 6歳以上または(or)身長120cm以上
if(6 <= age or 120 <= height):
    print("乗車できます")
else:
    print(“乗車できません")
# 6歳ではない(not)人
if not(age == 6):
    print("6歳ではない")
else:
    print("6歳です")
R言語
&, |, !
age <- 6
height <- 120
# 6歳以上かつ(&)身長120cm以上の人
if(6 <= age & 120 <= height){
    print("乗車できます")
}else{
    print("乗車できません")
}
# 6歳以上または(|)身長120cm以上の人
if(6 <= age | 120 <= height){
    print("乗車できます")
}else{
    print("乗車できません")
}
# 6歳ではない(!)人
if (!6 == age){
    print("6歳ではない人です")
}else{
    print("6歳の人です")
}
forループ
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ループ
Python
num=1
while num<10:
    print(num)
    num += 1
R言語
num <- 1
while(num < 10){
    print(num)
    num = num+1
} 
| 
 | 
 | 







