Rで解析:Rでも演算子を使えます!!「roperators」パッケージ


文字列などの演算子を利用することができるパッケージの紹介です。文字列演算子、代入演算子、範囲に含まれるか、浮動小数点を認識、classも含めて同じか判定、XOR演算子などが収録されています。コマンドの可読性向上だけでなくPythonなどに慣れている方は利用してはいかがでしょうか。

パッケージのバージョンは1.2.0。実行コマンドはwindows 11のR version 4.1.2で確認しています。

パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("roperators")

実行コマンド

詳細はコメント、パッケージヘルプを確認してください。

#パッケージの読み込み
library("roperators")

###文字列演算子#####
JPNCharVec <- c("からだにいいもの!!_")
JPNCharVec_2 <- c("からだに", "いいもの", "KARADA", "GOOD")
ENGCharVec <- c("KARADA-GOOD\\")

#結合:%+%コマンド
JPNCharVec %+% ENGCharVec
[1] "からだにいいもの!!_KARADA-GOOD\\"

#削除:%-%コマンド
JPNCharVec %-% "に|!!|_"
[1] "からだいいもの"

#繰り返し:%s*%コマンド
JPNCharVec %s*% 2
からだにいいもの!!_ 
"からだにいいもの!!_からだにいいもの!!_" 

#文字のカウント:%s/%コマンド
JPNCharVec %s/% "か|い"
か|い 
3

#正規表現の適応:%regex=%コマンド
#代入されるのでデータが変わります
print(JPNCharVec %regex=% c("\\い+", "i"))
[1] "からだにiもの!!_"

#例_組み合わせ
JPNCharVec <- c("からだにいいもの!!_")
JPNCharVec %-% "に|!!|_" %s*% 2
からだいいもの 
"からだいいものからだいいもの" 
########

###代入演算子#####
###注意:代入なので結果が保存されます#####

#加算:%+=%
NumVec <- 1:5
print(NumVec %+=% 1)
[1] 2 3 4 5 6

#減算:%-=%
NumVec <- 1:5
print(NumVec %-=% 1)
[1] 0 1 2 3 4

#乗算:%*=%
NumVec <- 1:5
print(NumVec %*=% 2)
[1] 2 4 6 8 10

#除算:%/=%
NumVec <- 1:5
print(NumVec %/=% 2)
[1] 0.5 1.0 1.5 2.0 2.5

#べき乗:%^=%
NumVec <- 1:5
print(NumVec %^=% 2)
[1] 1 4 9 16 25

#log:%log=%
NumVec <- 1:5
print(NumVec %log=% 2)
[1] 0.000000 1.000000 1.584963 2.000000 2.321928

#ルート:%root=%
NumVec <- 1:5
print(NumVec %root=% 2)
[1] 1.000000 1.414214 1.732051 2.000000 2.236068

###その他の演算子#####
#最小< X <最大の範囲に含まれるか:%><%コマンド
#範囲指定:c(最小, 最大)
c(1, 2) %><% c(1, 3)
[1] FALSE  TRUE

#最小<= X <=最大の範囲に含まれるか:%>=<%コマンド
1 %>=<% c(1, 3)
[1] TRUE

#if(a == b):%==%コマンド
#NAも認識
a <- c("か", NA, "だ", "い")
b <- c("か", NA, "ら", "い")
a %==% b
[1]  TRUE  TRUE FALSE  TRUE

#含まれていないか確認:%ni%コマンド
#含まれているのでFALSE
"K" %ni% c("K", "ら", "だ")
[1] FALSE

#XOR演算子:%xor%コマンド
#演算子挟んで同じまたは違うでFALSE
c(1, 3) %xor% c(4, 5)
[1] FALSE FALSE

#全て同じか判定:%aon%コマンド
c(1, 1) %aon% c(1, 1)
[1] TRUE

#浮動小数点を認識:%~=%コマンド
#その他:%>~%コマンド, %<~%コマンドがあります
#(0.1 * 3) == 0.3
#[1] FALSE
(0.1 * 3) %~=% 0.3
[1] TRUE
#参考
#isTRUE(all.equal(0.1 * 3, 0.3))

#classも含めて同じか判定:%===%コマンド
num(1) %===% int(1)
[1] FALSE

少しでも、あなたの解析が楽になりますように!!

スポンサードリンク

スポンサードリンク