symnum関数で「適当な区間の数値⇔対応する文字」みたいな処理を書く

symnum関数について、http://www.okada.jp.org/RWiki/?%C3%CE%A4%C3%A4%C6%A4%A4%A4%EB%A4%C8%A4%A4%A4%C4%A4%AB%CC%F2%A4%CB%CE%A9%A4%C4%28%3F%29%B4%D8%BF%F4%C3%A3#i1187283にちょいとだけ日本語情報があるだけで、その他の日本語情報が全くなかったのでメモん。

これは数値を適当な区間毎に対応する文字記号に置き換えて表示するための関数で、例えばこんな感じ。

> #適当なサンプルデータ
> i <- setNames(c(0,1,4,10),letters[1:4])
> i
 a  b  c  d 
 0  1  4 10 
> #0-2までは"."、3-4は"-", 5-6は"+", 7-8は"$"となる
> s <- symnum(ii, cut=2*(0:4), sym=c(".", "-", "+", "$"))
> print(s)
0 1 2 3 4 5 6 7 8 
. . . - - + + $ $ 
attr(,"legend")
[1] 0 \u0081e.\u0081f 2 \u0081e-\u0081f 4 \u0081e+\u0081f 6 \u0081e$\u0081f 8

Rの中ではP値とその信頼度?(95%信頼点を越えてるとか越えてないとかの奴)にも使われている模様。

> # 適当なP値ぽいデータ
> pval <- 0.1*(0.5)^(0:10)
> # P値⇔*の対応を作成
> symp <- symnum(pval, cutpoints=c(0, .001, .01, .05, .1, 1), symbols=c("***","**","*","."," "))
> cbind(P.val = format(pval), Signif = symp)
      P.val          Signif
 [1,] "1.000000e-01" "."   
 [2,] "5.000000e-02" "*"   
 [3,] "2.500000e-02" "*"   
 [4,] "1.250000e-02" "*"   
 [5,] "6.250000e-03" "**"  
 [6,] "3.125000e-03" "**"  
 [7,] "1.562500e-03" "**"  
 [8,] "7.812500e-04" "***" 
 [9,] "3.906250e-04" "***" 
[10,] "1.953125e-04" "***" 
[11,] "9.765625e-05" "***" 

また、show.max引数をTRUEにすると、最後の端の値だけその"値自身"にする事も出来るみたいん。
ふーん。