R_base
をテンプレートにして作成
開始行:
#contents
* Rの基本的な機能 & tips [#je115281]
** R 本体(Windows版)のアップデート [#jb05f73b]
RIGHT:22 October 2017
[[Updating R from R (on Windows) – using the {insta...
[[Windows用Rのバージョンアップ>http://d.hatena.ne.jp/ryam...
install.packages("installr")
library(installr)
updateR()
** Object の調査:str() [#l844a153]
RIGHT:21 March 2018
str() 関数はいろいろできるらしいのだけれど……
str(obj)
** 数の扱い [#qcb24dbc]
*** 二進数 digitsBase() [#dfd4d46b]
RIGHT:23November2013
10進数を二進数のベクトルに変換する~
パッケージ sfsmisc のインストールが必要
> library(sfsmisc)
> mydigits <- digitsBase(1101, base=2)
> mydigits
Class 'basedInt'(base = 2) [1:1]
[,1]
[1,] 1
[2,] 0
[3,] 0
[4,] 0
[5,] 1
[6,] 0
[7,] 0
[8,] 1
[9,] 1
[10,] 0
[11,] 1
> mydigits <- digitsBase(1101, base=2,13) ← ベクトルの長...
二進数に限らず利用できる
*** 重複しないランダムな数 sample() [#x92342f2]
RIGHT:23November2013
> sample(0:20,3)
[1] 0 11 6
0から20のうちランダムに3つの数字を重複せずに取り出す
*** 数値の切り捨て [#dd710a0a]
RIGHT:21 March 2018
万能ではないかもしれない~
さらに、これは、車輪の再発明になっているかもしれない
(が、round down が見つけられなかったのよ)
sprintf を使うと、round されてしまう~
統計量は round ではなく切り捨てがよいことも多いので
(四捨五入したら有意になってしまうかもしれない((そもそも...
文字列の操作とすることにして round down を実現する~
文字数を数えて、最終的な文字列の長さを決める~
元々の小数点以下桁数がわからないものを、小数点以下 dp桁に...
マイナス記号が付くと文字列が長くなるので……~
関数化しておくとよいのはわかるけれど、
後々のメンテナンスを考え(ブラックボックス化すると面倒な...
関数化はしないでおく((コピー&ペーストのミスの可能性は高...
切り捨て桁(dp)がデータより小さい場合でも 0 fill はしま...
作ってはみたものの、今のところ使い途がない気がしている……
mynum <- -0.052745
dp <- 3 # decimal places 小数点以下
# dp <- 9
mynumchar <- as.character(mynum)
if(mynum < 0) {
minusvalue <- 1
mynum <- round(-1 * mynum)
} else {
minusvalue <- 0
mynum <- round(mynum)
}
if( (mydigit <- log10(mynum)+1) < 0 ){ mydigit <- 1 }
mynum <- as.double(substr(mynumchar, 1, (minusvalue+mydi...
# -0.052 になる
# dp <- 9 のときは元の -0.052745 になる
** 文字列 [#a747c8b5]
*** 文字列の一致を検査:!is.na(match()) [#y9bdb470]
RIGHT:21 March 2018
文字列が一致のときは、match が integer の 1 を返す~
文字列が不一致のときは、match が integer の NA を返す~
NA は FALSE の代りにはならないので、is.na() を利用~
if(!is.na(match(myed1, myed2)){
# 一致したときの処理をココに
}
*** 文字列の表示:cat() [#i2f43c4a]
RIGHT:21 March 2018
cat は concatenate (結合、連結)であって猫ではない(← お...
cat("\n
All Data: Courtship Latency > 4
\n")
*** 文字を置換:sub() gsub() [#wb40a0fa]
RIGHT:23 March 2018
mystring は、list でも、dataframeの要素でもよい~
gsub は、同じ文字列に繰り返し適用~
正規表現が使えるらしい~
mystring <- sub("Re", "", mystring)
mystring <- gsub("-", "/", mystring) # - を / に変える
mystring <- gsub(".", "", mystring) # 全ての文字を消す
*** paste()関数 [#yd668da7]
RIGHT:20 July 2019
文字列の結合をするにはこれ~
cat ではない!~
デフォルトのセパレータは空白。指定するときは、sep= で
paste("char1", "char2", "char3", "char4")
# "char1 char2 char3 char4"
paste("char1", "char2", "char3", "char4", sep="")
# "char1char2char3char4"
*** list() [#x379afb8]
RIGHT:20 July 2019
様々な object を格納できる。入れすぎると使い勝手は悪くな...
下の例では、2×2分割表のデータと検定結果を格納
mydata <- matrix(c(4,6,3,4), nr=2)
library(exact2x2) #fisher.exact()
library(Exact) # exact.test()
library(DescTools) # GTest()
mylist <- list(mydata,
fisher.exact(mydata,midp=TRUE),
fisher.exact(mydata),
fisher.test(mydata, workspace=20000000),
exact.test(mydata, to.plot=FALSE), # Barnard's ex...
chisq.test(mydata),
chisq.test(mydata, correct=FALSE),
GTest(mydata,correct="williams"),
GTest(mydata) # correction is NOT in default
)
** 出力 [#y4a37c9a]
*** ファイル出力:sink() [#wfe082b3]
RIGHT:21 March 2018
sink("out.txt")
# この部分のコマンドの結果がファイル出力される
sink()
*** pdf出力:pdf() [#lb11e9db]
RIGHT:21 March 2018
サイズを黄金比 \(\left(1:\frac{1+\sqrt{5}}{2}\right)\) に...
pdf("myout.pdf", width=(7*(1+sqrt(5))/2), height=7, poin...
# この部分の描画の結果が出力される
dev.off()
*** 表形式の出力:write.table() [#c64c4c66]
RIGHT:20 July 2019
データなどをダブルクォーテーションで囲まず、タブ区切り、
カラム名と行名入り、上書き
write.table(
mydata,
"myout.txt",
quote=FALSE, # ダブルクォーテーションで囲まない
sep="\t",
row.names=TRUE,
col.names=TRUE,
append=FALSE # 上書き
)
** ほかの関数 [#t88166c4]
*** 例外処理:try() tryCatch() [#hf25441b]
RIGHT:20 July 2019
何らかの関数がエラーが出る場合を含むとき、
そこで処理が止まってしまうと困る、
そんなときに
try(何らかの関数)
tryCatch(
{何らかの関数}
, error = function(e){return("")} # e にはエラ...
)
*ESS [#uf310d46]
Emacs Speaks Statistics:Emacs で R を使う~
Emacs には後からインストールをする必要あり~
[[install-memo5.1]]を参照
** ESS起動 [#nc982a71]
RIGHT:03 Oct 2005
M-x R
コマンド入力後
C-c C-j
C-m (改行)
で、1行ずつコマンドを実行する。
*コマンドメモ [#w5e24b5d]
RIGHT:30 March 2004
> q() ← quit
> source("commands.R") ← コマンドを書き込んだソースを読...
> sink("out.txt") ← ファイルに出力
> sink() ← 出力をコンソールに戻す
> objects() ← 現在あるオブジェクトを表示
> mydata <- read.table("data.txt", header=TRUE) ← ファイ...
> library(ctest) ← ライブラリを使う
> t.test(A, B) ← t検定(unpaired)。※ A、Bにはデータを入...
> var.test(A, B) ← F検定
> t.test(A, B, var.equal=TRUE) ← t検定、等分散
> wilcox.test(A, B) ← U検定(=Wilcoxon test)
> ks.test(A, B) ← Kolmogorov-Smirnov test
> getwd() ← working directoryの表示
> setwd("c:/cygwin/home/tomaru/stats") ← working directo...
追記 12 July 2013
> length(X) ← データの数
> mean(X) ← 平均
> sd(X)/(length(X)^0.5) ← 標準誤差
追記 22 February 2015~
> help.start() ← htmlヘルプを起動
**コマンドラインで利用する(Windows) [#v5430009]
RIGHT:05September2013
cygwin shell または、コマンドプロンプトで
rscript command.R
rscript command.R & ← バックグラウンドで実行する場合
※ pathを通しておかなければなりません(MS-DOS!のようです...
参考:[[R の入出力画面を経由せずに実行:他のプログラムか...
*Rのリンク [#fd0daed0]
- [[RjpWiki>http://www.okada.jp.org/RWiki/]]
|Today:&counter(today); |Yesterday:&counter(yesterday); |...
終了行:
#contents
* Rの基本的な機能 & tips [#je115281]
** R 本体(Windows版)のアップデート [#jb05f73b]
RIGHT:22 October 2017
[[Updating R from R (on Windows) – using the {insta...
[[Windows用Rのバージョンアップ>http://d.hatena.ne.jp/ryam...
install.packages("installr")
library(installr)
updateR()
** Object の調査:str() [#l844a153]
RIGHT:21 March 2018
str() 関数はいろいろできるらしいのだけれど……
str(obj)
** 数の扱い [#qcb24dbc]
*** 二進数 digitsBase() [#dfd4d46b]
RIGHT:23November2013
10進数を二進数のベクトルに変換する~
パッケージ sfsmisc のインストールが必要
> library(sfsmisc)
> mydigits <- digitsBase(1101, base=2)
> mydigits
Class 'basedInt'(base = 2) [1:1]
[,1]
[1,] 1
[2,] 0
[3,] 0
[4,] 0
[5,] 1
[6,] 0
[7,] 0
[8,] 1
[9,] 1
[10,] 0
[11,] 1
> mydigits <- digitsBase(1101, base=2,13) ← ベクトルの長...
二進数に限らず利用できる
*** 重複しないランダムな数 sample() [#x92342f2]
RIGHT:23November2013
> sample(0:20,3)
[1] 0 11 6
0から20のうちランダムに3つの数字を重複せずに取り出す
*** 数値の切り捨て [#dd710a0a]
RIGHT:21 March 2018
万能ではないかもしれない~
さらに、これは、車輪の再発明になっているかもしれない
(が、round down が見つけられなかったのよ)
sprintf を使うと、round されてしまう~
統計量は round ではなく切り捨てがよいことも多いので
(四捨五入したら有意になってしまうかもしれない((そもそも...
文字列の操作とすることにして round down を実現する~
文字数を数えて、最終的な文字列の長さを決める~
元々の小数点以下桁数がわからないものを、小数点以下 dp桁に...
マイナス記号が付くと文字列が長くなるので……~
関数化しておくとよいのはわかるけれど、
後々のメンテナンスを考え(ブラックボックス化すると面倒な...
関数化はしないでおく((コピー&ペーストのミスの可能性は高...
切り捨て桁(dp)がデータより小さい場合でも 0 fill はしま...
作ってはみたものの、今のところ使い途がない気がしている……
mynum <- -0.052745
dp <- 3 # decimal places 小数点以下
# dp <- 9
mynumchar <- as.character(mynum)
if(mynum < 0) {
minusvalue <- 1
mynum <- round(-1 * mynum)
} else {
minusvalue <- 0
mynum <- round(mynum)
}
if( (mydigit <- log10(mynum)+1) < 0 ){ mydigit <- 1 }
mynum <- as.double(substr(mynumchar, 1, (minusvalue+mydi...
# -0.052 になる
# dp <- 9 のときは元の -0.052745 になる
** 文字列 [#a747c8b5]
*** 文字列の一致を検査:!is.na(match()) [#y9bdb470]
RIGHT:21 March 2018
文字列が一致のときは、match が integer の 1 を返す~
文字列が不一致のときは、match が integer の NA を返す~
NA は FALSE の代りにはならないので、is.na() を利用~
if(!is.na(match(myed1, myed2)){
# 一致したときの処理をココに
}
*** 文字列の表示:cat() [#i2f43c4a]
RIGHT:21 March 2018
cat は concatenate (結合、連結)であって猫ではない(← お...
cat("\n
All Data: Courtship Latency > 4
\n")
*** 文字を置換:sub() gsub() [#wb40a0fa]
RIGHT:23 March 2018
mystring は、list でも、dataframeの要素でもよい~
gsub は、同じ文字列に繰り返し適用~
正規表現が使えるらしい~
mystring <- sub("Re", "", mystring)
mystring <- gsub("-", "/", mystring) # - を / に変える
mystring <- gsub(".", "", mystring) # 全ての文字を消す
*** paste()関数 [#yd668da7]
RIGHT:20 July 2019
文字列の結合をするにはこれ~
cat ではない!~
デフォルトのセパレータは空白。指定するときは、sep= で
paste("char1", "char2", "char3", "char4")
# "char1 char2 char3 char4"
paste("char1", "char2", "char3", "char4", sep="")
# "char1char2char3char4"
*** list() [#x379afb8]
RIGHT:20 July 2019
様々な object を格納できる。入れすぎると使い勝手は悪くな...
下の例では、2×2分割表のデータと検定結果を格納
mydata <- matrix(c(4,6,3,4), nr=2)
library(exact2x2) #fisher.exact()
library(Exact) # exact.test()
library(DescTools) # GTest()
mylist <- list(mydata,
fisher.exact(mydata,midp=TRUE),
fisher.exact(mydata),
fisher.test(mydata, workspace=20000000),
exact.test(mydata, to.plot=FALSE), # Barnard's ex...
chisq.test(mydata),
chisq.test(mydata, correct=FALSE),
GTest(mydata,correct="williams"),
GTest(mydata) # correction is NOT in default
)
** 出力 [#y4a37c9a]
*** ファイル出力:sink() [#wfe082b3]
RIGHT:21 March 2018
sink("out.txt")
# この部分のコマンドの結果がファイル出力される
sink()
*** pdf出力:pdf() [#lb11e9db]
RIGHT:21 March 2018
サイズを黄金比 \(\left(1:\frac{1+\sqrt{5}}{2}\right)\) に...
pdf("myout.pdf", width=(7*(1+sqrt(5))/2), height=7, poin...
# この部分の描画の結果が出力される
dev.off()
*** 表形式の出力:write.table() [#c64c4c66]
RIGHT:20 July 2019
データなどをダブルクォーテーションで囲まず、タブ区切り、
カラム名と行名入り、上書き
write.table(
mydata,
"myout.txt",
quote=FALSE, # ダブルクォーテーションで囲まない
sep="\t",
row.names=TRUE,
col.names=TRUE,
append=FALSE # 上書き
)
** ほかの関数 [#t88166c4]
*** 例外処理:try() tryCatch() [#hf25441b]
RIGHT:20 July 2019
何らかの関数がエラーが出る場合を含むとき、
そこで処理が止まってしまうと困る、
そんなときに
try(何らかの関数)
tryCatch(
{何らかの関数}
, error = function(e){return("")} # e にはエラ...
)
*ESS [#uf310d46]
Emacs Speaks Statistics:Emacs で R を使う~
Emacs には後からインストールをする必要あり~
[[install-memo5.1]]を参照
** ESS起動 [#nc982a71]
RIGHT:03 Oct 2005
M-x R
コマンド入力後
C-c C-j
C-m (改行)
で、1行ずつコマンドを実行する。
*コマンドメモ [#w5e24b5d]
RIGHT:30 March 2004
> q() ← quit
> source("commands.R") ← コマンドを書き込んだソースを読...
> sink("out.txt") ← ファイルに出力
> sink() ← 出力をコンソールに戻す
> objects() ← 現在あるオブジェクトを表示
> mydata <- read.table("data.txt", header=TRUE) ← ファイ...
> library(ctest) ← ライブラリを使う
> t.test(A, B) ← t検定(unpaired)。※ A、Bにはデータを入...
> var.test(A, B) ← F検定
> t.test(A, B, var.equal=TRUE) ← t検定、等分散
> wilcox.test(A, B) ← U検定(=Wilcoxon test)
> ks.test(A, B) ← Kolmogorov-Smirnov test
> getwd() ← working directoryの表示
> setwd("c:/cygwin/home/tomaru/stats") ← working directo...
追記 12 July 2013
> length(X) ← データの数
> mean(X) ← 平均
> sd(X)/(length(X)^0.5) ← 標準誤差
追記 22 February 2015~
> help.start() ← htmlヘルプを起動
**コマンドラインで利用する(Windows) [#v5430009]
RIGHT:05September2013
cygwin shell または、コマンドプロンプトで
rscript command.R
rscript command.R & ← バックグラウンドで実行する場合
※ pathを通しておかなければなりません(MS-DOS!のようです...
参考:[[R の入出力画面を経由せずに実行:他のプログラムか...
*Rのリンク [#fd0daed0]
- [[RjpWiki>http://www.okada.jp.org/RWiki/]]
|Today:&counter(today); |Yesterday:&counter(yesterday); |...
ページ名: