R・Matlab・C・Excelの基本関数対応表

R・Matlab・Cの基本的な関数の対応表。
また、R・Matlab・Excelの基本的な統計処理の対応表です。
もともと自分はCから入って、のちにMatlabを学び。
最後にRへとたどりついたので。
この対応表も、当初は便利かなと思ってつくっていました。
ただ、いまとなっては作業はほぼR一択で。
どうしても実行形式にしたければ、次点でCという暮らし。
Matlab()やExcel()といった不浄のものには触りたくもないので。
知識が遠のいて、いろいろ間違ってるかもしれません。

一般

言語 R Matlab C
コメント
# 1行コメント
if (FALSE) {
  範囲コメント
}
% 1行コメント
範囲選択→[右クリック]
  →[コメント化]
// 1行コメント(本来はC++)
/* 範囲コメント */
代入演算
x = 1
x <- 2 # 等号と同じ
y <- x <- 3 # 連続代入
4 -> z # 右代入
x = 1
x = 1;
ヘルプ
help(関数名)
?関数名
help(package=パッケージ名)
help.search("キーワード")
??キーワード
help 関数名
Screen 引数? % PTPのScreen関数
lookfor 'キーワード'
 
関数定義
関数名 <- function(引数) {
  内容
  return(返り値)
}
function 返り値 = 関数名(引数)
% H1行(lookforの検索対象)
% ヘルプテキスト
内容
return;
// 宣言部
関数型 関数名(引数型);

// 定義
関数型 関数名(引数型 引数名) {
  内容;
  return 返り値;
}
forループ
for (i in 開始値:終了値) {
  内容
}
for (i=開始値:終了値)
  内容
end
for (i=開始値;条件;増減式) {
  内容;
}
if分岐
if (条件式) {
  内容
} else if (条件式) {
  内容
} else {
  内容
}
if (条件式)
  内容
elseif (条件式)
  内容
else
  内容
end
if (条件式) {
  内容;
} else if (条件式) {
  内容;
} else {
  内容;
}
ベクトル作成
c(x1, x2, ...)
[x1, x2, ...]
変数型 x[] = {x1, x2, ...};
0ベクトル
rep(0, n)
   
行列作成
matrix(c(x11, x12,..., x1n,
  x21, ..., xmn),
  nrow=m, byrow=TRUE) # 行ごと
matrix(c(x11, x21,..., xm1,
  x12, ..., xmn),
  nrow=m) # 列ごと
[x11 x12 ... x1n;
  x21 ...; ... xmn]
変数型 x[m][n] = {x11, ..., x1n}
  ...{..., xmn};
行追加
rbind(行列, 行データ)
   
列追加
cbind(行列, 列データ)
   
0行列
matrix(0, nrow=m, ncol=n)
zeros(m, n)
 
1行列
matrix(1, nrow=m, ncol=n)
ones(m, n)
 
連続整数
開始値:終了値
開始値:終了値
(forループでの代入)
等差数列
seq(開始値, 終了値, 公差)
開始値:公差:終了値
(forループでの代入)
転置
t(行列)
行列'
 
要素取り出し
x[要素番号] # ベクトル
x[行番号,] # 行
x[, 列番号] # 列
x(要素番号) % ベクトル
x(行番号, :) % 行
x(:, 列番号) % 列
x[要素番号] // 1次元配列
x[行番号][列番号] // 2次元配列
非零位置
which(X != 0)
find(X)
 
文字列
> # 文字列全体でひとつ
> s <- c("abc", "defgh")
> s[1]
[1] "abc"
> s[2]
[1] "defgh"
>> % 文字要素のベクトル
>> s = char('abc', 'defgh');
>> s(2)
ans =
d
>> s(1, :)
ans =
abc␣␣ % 長さ5のベクトル
>> deblank(s(1, :))
ans =
abc % 長さ3のベクトル
 
文字列連結
> a <- "Brain"
> b <- "Science"
> paste(a, b, sep="")
[1] "BrainScience"
> paste(b, "of", a)
[1] "Science of Brain"
>> a = 'Brain';
>> b = 'Science';
>> [a b]
ans =
BrainScience
>> sprintf('%s of %s', b, a)
ans =
Science of Brain
strcat(s1, s2)
型変換
as.yyy()
e.g., as.numeric("3.14")
xxx2yyy()
e.g., str2num('3.14')
xxxtoyyy()
e.g., atoi("3.14")
標準入力
x <- readline("説明文")
x = input('説明文') % 数値
x = input('説明文',
  's') % 文字列
scanf("%d", &x) // 整数
scanf("%s", x) // 文字列
標準出力
print(x) # 数値向け
cat(x, "\n") # 文字列向け
sprintf("%d", x) # 文字列化
fprintf('%i\n', x) // 整数
fprintf('%s\n', x) // 文字列
printf("%d\n", x) // 整数
printf("%s\n", x) // 文字列
変数保存
save(x, file="data.RData")
save(x1, x2, ...,
  file="data.RData")
save(list=c("x1", "x2", ...),
  file="data.RData")
save data.mat x
save data.mat x1 x2 ...
save("data.mat", "x")
 
領域保存
save.image("data.RData")
save data.mat
 
変数消去
rm(変数名)
clear 変数名
 
領域消去
rm(list=ls())
clear
clear all
 
ディレクトリ
getwd() # 確認
setwd(ディレクトリ) # 変更
pwd % 確認
cd ディレクトリ % 変更
 
ファイル一覧
list.files()
dir() # Windows版のみ
dir
 
変数一覧
ls()
who
 
共通な記法 + - * / ^ || && abs sqrt sin cos tan log log10 exp round floor

1次元データの扱いと数値要約

言語 R Matlab Excel
総和
sum(x)
rowSums(x) # 行
colSums(x) # 列
sum(x)
sum(x, 2) % 行
sum(x, 1) % 列
SUM(セル)
平均
mean(x)
rowMeans(x) # 行
colMeans(x) # 列
mean(x)
mean(X, 2) # 行
mean(X, 1) # 列
AVERAGE(セル)
中央値
median(x)
median(x)
MEDIAN(セル)
最頻値関連
table(x) # 度数分布表を出力
mode(x)
MODE(セル)
分散
var(x) # 不偏
var(x) *
  (1 - 1/length(x)) # 標本
var(x) % 不偏
var(x, 1) % 標本)
VAR(セル) (不偏)
VARP(セル) (標本)
標準偏差
sd(x) # 不偏
std(x) % 不偏
std(x, 1) % 標本
STDEV(セル) (不偏)
STDEVP(セル) (標本)
四分位範囲
IQR(x)
iqr(x)
 
四分位点
quantile(x,
  probs=c(0.25, 0.75))
quantile(x, [0.25 0.75])
QUARTILE(セル, 割合)
割合: 1(25%点)または3(75%点)
分位点
quantile(x, probs=割合)
quantile(x, 割合)
PERCENTILE(セル, 割合)
レンジ
diff(range(x))
range(x)
MAX(セル) - MIN(セル)
最大値
max(x)
max(x)
MAX(セル)
最小値
min(x)
min(x)
MIN(セル)
5数要約
summary(x)
 
[ツール]→[分析ツール]
  →[基本統計量]

推定・検定(推測統計)

言語 R Matlab Excel
1群t検定
t.test(x,
  alternative=種類,
  mu=母平均,
  conf.level=有意水準)
種類:
  "two.sided"(両側)
  "less"(下側)
  "greater"(上側)
有意水準: 0--1の数値
(5%水準なら0.95)
[h p CI stats] = ttest(x,
  母平均, 危険水準, 種類)
危険水準: 0--1の数値スカラ
(5%水準なら0.05)
種類: 'both', 'left', 'right'
 
2群t検定
対応あり
t.test(x, y,
  alternative=種類,
  paired=TRUE,
  var.equal=TRUE,
  conf.level=有意水準)
[h p CI stats] = ttest(x, y,
  母平均, 危険水準, 種類)
[ツール]→[分析ツール]→[t検定:一対の標本による平均の検定]
2群t検定
対応なし
t.test(x, y,
  alternative=種類,
  paired=FALSE,
  var.equal=TRUE,
  conf.level=有意水準)
[h p CI stats] = ttest2(x, y,
  母平均, 危険水準, 種類,
  'equal')
[ツール]→[分析ツール]→[t検定:等分散を仮定した2標本による検定]
Welch検定
t.test(x, y,
  alternative=種類,
  paired=FALSE,
  var.equal=FALSE,
  conf.level=有意水準)
[h p CI stats] = ttest2(x, y,
  母平均, 危険水準, 種類,
  'unequal')
[ツール]→[分析ツール]→[t検定:分散が等しくないと仮定した2標本による検定]
F検定
var.test(x, y,
  alternative=種類,
  conf.level=有意水準)
[h p CI stats] =
  vartest2(x, y,
  危険水準, 種類)
[ツール]→[分析ツール]→[F検定:2標本を使った分散の検定]
カイ二乗独立性検定
chisq.test(x, y,
  correct=補正)
x・yは同じ長さのvector
またはxをmatrixとしyはNULL
補正: 連続性の補正の有無
[h p stats] = chi2gof(x,
  'alpha', 危険水準, ...)
 
カイ二乗適合度検定
chisq.test(x, p=確率)
x・pは同じ長さのvector
確率: xの各要素の出現確率
[h p stats] = chi2gof(x,
  'frequency', 確率ベクトル,
  'alpha', 危険水準, ...)
 
フィッシャーの正確検定
fisher.test(x, y,
  alternative=種類,
  conf.level=有意水準)
データ形式はchisq.testと同じ
   
二元ANOVA
対応なし
summary(aov(y ~ x1 * x2))
y: 従属変数(数値)
x1・x2: 独立変数(ファクタ)
[p table stats] =
  anova2(x, 反復数)
反復数: 各セル毎の観測数
[ツール]→[分析ツール]→[分散分析:繰り返しのある二元配置]または[分散分析:繰り返しのない二元配置]
二元ANOVA
両側対応
summary(aov(y ~ x1 * x2
  + Error(ID + ID:x1 + ID:x2
  + ID:x1:x2)))
ID: 対応を表わすファクタ
二元ANOVA
片側対応
summary(aov(y ~ x1 * x2
  + Error(ID + ID:x1
  + ID:x1:x2)))
テューキーの多重比較
TukeyHSD(aov(y ~ x1 * x2))
   
平均値図示
interaction.plot(x1, x2, y)