群馬大学 | 医学部 | サイトトップ | 医学情報処理演習

医学情報処理演習:2011年度第3回の関数一覧など

第3回に使った関数や文の主なものをまとめます (A selected summary of functions and statements used in the 3rd practice is shown here.)

このまとめには,昨年度この演習を受講した3年生W君の多大な協力を得ました。感謝します。(Special Thanks to Mr. W!!)

関数名(name)機能(effect)使い方(usage)
mean()算術平均を返す例えばmean(c(2,13,4,9))で7を返す。引数は行列なども可。欠損値を含む場合は,na.rm=TRUEオプションをつけないと計算できずNAが返る。ただしmean(0.2,0.4)などとやるとトリム平均という全く別の事を実行してしまうので注意。
length()オブジェクトの長さを返す行列の要素数も返すことが出来る。また、Rではスカラーは長さ1のベクトルになっている。前回の一覧も参照。
sum()合計値を出すベクトルまたは行列の要素の合計値を返す。前回の一覧も参照。
median()中央値を返す与えたデータの中央値(昇順にしてちょうど中央にくる値)を返す。データとして取ることができる引数は,通常はベクトルである。行列を渡すと全要素をつないだ1つのベクトル扱いする。リストやデータフレームは引数に取れない。データフレームのすべての変数について,それぞれの中央値を計算させたい場合は,データフレームが特殊なリストであることを利用して,lapply(データフレーム名, median)とすればよい。
function(){ }関数を定義する例えばmean.median <- function(X){c(mean(X),median(X))}とすると,mean.median(c(13,2,4,9))で7.0および6.5として平均値と中央値を返すようになる。複数行にわたる関数定義をした場合,最後の行が返り値になる。
return()関数の返り値であることを明示する関数定義の最後の行で返り値を明示したい場合にreturn()の引数にする。
rep()繰り返して返す最初の引数を、2番目の引数分だけ繰り返す。例としてrep(c(3,5,6),2)とすると、3,5,6,3,5,6となる。
table()度数分布表を返すカテゴリカルデータの度数分布表を返す。ベクトルを2つ以上指定してクロス集計も可能。(ただし3以上は見づらい)
for(){}()の間{}内の処理を繰り返す例 X<- 15としてfor (k in 1:3) {X <- X*k}でXは90となる。これは((X*1)*2)*3を実行したことになる。第2回の一覧表の補足も参照。
as.numeric()数値型に型変換する型がcomplexなら虚数部は失われる。character型でも"13"のような数字であれば変換できるが"World"のような文字列はNAとなる。
names()オブジェクト名称の参照または指定ベクトルを引数にすると,各要素の名称を参照することができる。付値することで名前をつけることもできる。
sort()データをソートするデフォルトでは昇順にデータをソートする。降順にしたければオプションdec=TRUEとすればよい。
curve()関数のグラフィックを描くcurve(F(x),A,B)で関数F(x)を(A,B)区間で図示する。オプションとしてはlty=1で実線、lty=2で破線。さらにadd=TRUEで追加の図示も可。他にもオプションとしてxlabやylabもある。例としてcurve(sin(x),-pi,pi,lty=2)で-πからπまでSin(x)を破線で図示してくれる。
dnorm()正規分布の確率密度関数正規分布の確率密度関数を与える.dnorm(x,A,B)でAを平均とし、Bを標準偏差とする正規分布の確率密度関数のxに対応する確率を返す。例えばdnorm(-5:5,0,1)としてみると、-5から5の範囲まで1刻みの確率密度を返してくれる。
quantile()分位数を返すquantile(X,A)でXの100Aパーセンタイル値を返す(ただしXは数値ベクトル)。例えばquantile(23:33,c(0.2,0.6))で25,29を返す。ちなみにAは指定しなければデフォルトでc(0,0.25,0.5,0.75,1)となっている。
fivenum五数要約値を返す引数は数値ベクトル。五数要約値とは,最小値,第1四分位,中央値(第2四分位),第3四分位,最大値のことである。
cat()文字列をRコンソールに表示する基本的な文字列出力を行う。 cat()を使うと""無しで文字列を表示する。 cat()は出力後に改行しないので、改行を意味する文字列"\n"を文字列末尾に付ける。
abs()絶対値を返すcomplex型の値,つまり複素数も引数に取ることができる(複素数のabs()で返るのは,Mod()と同じく,複素平面におけるその複素数ベクトルの長さである。例えば複素数1-5iについて,abs(1-5i)とすると,sqrt(1^2+5^2)の計算結果として5.09902が返る。なお,複素数の実部を取りだす関数はRe(),虚部を取りだす関数はIm()である)。ベクトルや行列,データフレームでは各要素の絶対値を返す。リストを引数に取ることはできない。リストのすべての要素について絶対値を取りたいときはlapply(リスト名, abs)とする。
var()不偏分散を返す引数はベクトル(引数として行列を渡すと列ごとの不偏分散が対角成分,n列目とm列目の共分散が(n,m)及び(m,n)の要素となる行列が返る)。データのばらつき具合を知ることが可能な不偏推定量。ただし元のデータと次元が異なるので注意。
sd()標準偏差を返すこれも通常,引数はベクトル。不偏分散の平方根を取って、元のデータと次元を揃えたもの。データが正規分布に従うようなときには平均値±1.96SDは95%信頼区間と呼ばれ、データの95%がそこに属するとされる。
補足中央値について中央値は偶数個の要素から成るデータを扱う時(仮に2n個とすると)、n番目とn+1番目の算術平均を示す。数値ベクトルXの中央値はmedian(X)で得られる。同順位の値を含む場合も通常はmedian(X)で良いが,測定値の精度を考慮して厳密な中央値を求めたければ,library(fmsb); truemedian(X)とする。
最頻値についてあるデータDの最頻値を求めたければnames(sort(table(D),dec=TRUE))[1]とすればよい。
piについてRではpiで円周率を表すπを示す。
分位数についてデータを昇順に並べて、その要素をn等分するような群に分けるとき、その境にある要素をn分位数という。注意すべきは範囲(最小値から最大値まで)をn等分するわけではないこと。これは例えばquantile(c(1:10,100))とすれば確かめられる。
パーセンタイルについて100分位数のこと。例えば中央値は50パーセンタイル値だし、最大値は100パーセンタイル値である。

リンクと引用について