Rで忘れがちな有用コマンド
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
|このページについて|
''概要'':このページでは、「かなり基本的なコマンドなので、...
''親ページ'':このページの親ページは[[R]]です。
|目次|
#contents
----
*有用な目立たない関数 [#b88622e1]
**行列からNAを取り除く [#k2bfdd94]
~
数値(整数4桁、小数3桁)からなるデータフレーム、またはマト...
> # 例を作る
> x <- matrix(1:30, 5, 6)
> x[1,2] <- x[3,4] <- x[4, 6] <- NA
> x
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 NA 11 16 21 26
[2,] 2 7 12 17 22 27
[3,] 3 8 13 NA 23 28
[4,] 4 9 14 19 24 NA
[5,] 5 10 15 20 25 30
> # 適用 わずかにこれだけ
> y <- x[!is.na(rowSums(x)), !is.na(colSums(x))]
> y
[,1] [,2] [,3]
[1,] 2 12 22
[2,] 5 15 25
-x[complete.cases(x),complete.cases(t(x))] というのもあり
> x[complete.cases(x),complete.cases(t(x))]
[,1] [,2] [,3]
[1,] 2 12 22
[2,] 5 15 25
後者の方が効率がよいらしい.
> x <- matrix(1:30, 5, 6)
> x[1,2] <- x[3,4] <- x[4, 6] <- NA
> system.time(for(i in 1:100000) y <- x[!is.na(rowSums(x...
user system total user.c...
24.156 0.480 27.397 ...
> system.time(for(i in 1:100000) z <- x[complete.cases(x...
user system total user.c...
4.914 0.087 5.540 ...
行列のサイズにも依存する?
> x <- matrix(rnorm(1000000), 1000, 1000)
> x[sample(1000,50),sample(1000,50)] <- NA
> system.time(for(i in 1:100) y <- x[!is.na(rowSums(x)),...
user system total user.c...
27.518 2.444 32.602 ...
> system.time(for(i in 1:100) z <- x[complete.cases(x),c...
user system total user.c...
25.149 4.482 32.726 ...
**dataハンドリングをすべてRの中で行う(エクセルに頼らない...
edit.data.frame
package:utils
data.entry
package:utils
fix
package:utils
[[http://finzi.psych.upenn.edu/R/doc/manual/R-data.html:h...
{Rcmdr}
が関連するようである。例えば、
showData()
とか。
write.table()
edit()
とか。ここら辺はヘルプでもみましょう。
write.matrix()
{MASS}
も有用っぽい.
参考:
-[[http://cse.naro.affrc.go.jp/takezawa/r-tips/r/45.html:...
-[[http://cran.r-project.org/doc/manuals/R-data.pdf:http:...
-[[http://www.okada.jp.org/RWiki/index.php?%A5%C7%A1%BC%A...
**lsという関数が有用 [#ba271b80]
>ls()
とやると、自分がどんなオブジェクトを定義したか、一覧が見...
**rmという関数が有用 [#v0b13ca9]
>rm()
とやると、自分が定義したオブジェクトを消すことが出来ます...
**すべてのオブジェクトを消去する方法 [#j813cd85]
RGui→"その他"→"すべてのオブジェクトの消去"
混乱しないためには、新しい作業スペースを使うほうがいいか...
**Iという関数が有用 [#q3aa9601]
lm(x~y)
lm(x~y^2)
の二つは、同じ結果を返す。
lm(x~I(y^2))
とやると、ちゃんと二乗したものを説明変数とみなしてくれる。
**search()が有用. [#e4d431f1]
現時点でインストールされており,かつ,読み込まれているパ...
search()
**namesという関数が有用。 [#fc37c0fa]
[[Rを使って計量経済分析]]の例でいうと、
> summary(lm(I ~ Y + r1))->fit
> names(fit)
とやれば
[1] "call" "terms" "residuals" "coe...
[7] "df" "r.squared" "adj.r.squared" "fs...
attr()
attributes()
structure()
なども参照.
**strという関数が有用。 [#m4df6534]
[[Rを使って計量経済分析]]の例でいうと、
> summary(lm(I ~ Y + r1))->fit
> str(fit)
とやると
List of 11
$ call : language lm(formula = I ~ Y + r1)
$ terms :Classes 'terms', 'formula' length 3 I ~...
.. ..- attr(*, "variables")= language list(I, Y, r1)
.. ..- attr(*, "factors")= int [1:3, 1:2] 0 1 0 0 0 1
.. .. ..- attr(*, "dimnames")=List of 2
.. .. .. ..$ : chr [1:3] "I" "Y" "r1"
.. .. .. ..$ : chr [1:2] "Y" "r1"
.. ..- attr(*, "term.labels")= chr [1:2] "Y" "r1"
.. ..- attr(*, "order")= int [1:2] 1 1
.. ..- attr(*, "intercept")= int 1
.. ..- attr(*, "response")= int 1
.. ..- attr(*, ".Environment")=length 8 <environment>
.. ..- attr(*, "predvars")= language list(I, Y, r1)
.. ..- attr(*, "dataClasses")= Named chr [1:3] "numeri...
.. .. ..- attr(*, "names")= chr [1:3] "I" "Y" "r1"
$ residuals : Named num [1:105] -1.79 -6.04 -7.57...
..- attr(*, "names")= chr [1:105] "1" "2" "3" "4" ...
$ coefficients : num [1:3, 1:4] 7.821 2.090 -1.535 2...
..- attr(*, "dimnames")=List of 2
.. ..$ : chr [1:3] "(Intercept)" "Y" "r1"
.. ..$ : chr [1:4] "Estimate" "Std. Error" "t value" "...
$ aliased : Named logi [1:3] FALSE FALSE FALSE
..- attr(*, "names")= chr [1:3] "(Intercept)" "Y" "r1"
$ sigma : num 5.65
$ df : int [1:3] 3 102 3
$ r.squared : num 0.458
$ adj.r.squared: num 0.448
$ fstatistic : Named num [1:3] 43.2 2.0 102.0
..- attr(*, "names")= chr [1:3] "value" "numdf" "dendf"
$ cov.unscaled : num [1:3, 1:3] 0.19893 -0.00458 -0.02...
..- attr(*, "dimnames")=List of 2
.. ..$ : chr [1:3] "(Intercept)" "Y" "r1"
.. ..$ : chr [1:3] "(Intercept)" "Y" "r1"
- attr(*, "class")= chr "summary.lm"
**summaryとかsummary.lsとかpredict.lsとか [#s7f574a4]
[[ここ:http://www.okada.jp.org/RWiki/index.php?cmd=read&p...
**methods{utils} [#dd7b62d7]
[[RjpWikiのこのページ:http://www.okada.jp.org/RWiki/index...
たとえば、kfilter{sspir}の中身を見たい場合、
> kfilter
function (ss)
{
UseMethod("kfilter")
}
<environment: namespace:sspir>
としか表示されない。中身を知るために、
> methods(kfilter)
とやれば
[1] kfilter.SS kfilter.ssm
を得る。だから、
> kfilter.SS
とか
> kfilter.ssm
とか入力すれば関数の中身が見られる。
ところが、tsls(sem)の場合、
> tsls
function (y, ...)
{
UseMethod("tsls")
}
<environment: namespace:sem>
となるので、
> methods{tsls}
と入力しても
[1] tsls.default* tsls.formula*
Non-visible functions are asterisked
となって中身が隠蔽されている。
そこで、
> getS3method("tsls", "default")
や
> getS3method("tsls", "formula")
とすればやっと中身が見られる。
ちなみに、kfilterの場合でも
> getS3method("kfilter","SS")
とか
> getS3method("kfilter","ssm")
やっても同じ結果を得られる。
**system.time () {base} [#u1804d40]
-time() {base}
**色コード [#t8290469]
colors()
[[RwpWikiの"Rにおける色の名前":http://www.okada.jp.org/RW...
*グラフィック関連 [#yf112fe0]
**グラフィック一般 [#ycb20378]
[[RwpWikiの"Rのグラフィックスパラメータ ":http://www.okad...
**二つの図を同じwindowの中に分割して表示 [#hd724da8]
グラフィックスパラメータ指定関数
par()
を使います。
**3Dプロット [#oa1b4e05]
persp
を使えばよいです。これを使う際に注意点は、以下の例を参照。
> a<-1:10
> b<-6:20
> f<-function(x,y){x^2+y^2}
> persp(a,b,outer(a,b,f),theta = 30, phi = 30, expand = ...
> persp(a,b,outer(b,a,f),theta = 30, phi = 30, expand = ...
以下にエラーpersp(x, y, z, xlim, ylim, zlim, theta, phi,...
'z' 引数が不正です
> persp(b,a,outer(b,a,f),theta = 30, phi = 30, expand = ...
> persp(b,a,outer(a,b,f),theta = 30, phi = 30, expand = ...
以下にエラーpersp(x, y, z, xlim, ylim, zlim, theta, phi,...
'z' 引数が不正です
すなわち、persp(x,y,z)で、「x:x軸のベクトル」、「y:y軸...
**凡例を入れる [#q92a53ed]
x<-c(3,2,3,2,4,5,4,6,7,5,7,6,8,9,8,7,8,9)
plot(x,type="l",main="zu",xlab="yokojiku",ylab="tatejiku")
legend(locator(1),legend=c("NAME"),lty=c(1), lwd=c(1))
例えば,上のコマンドをそのままコピペしてRで実行してみまし...
**図をeps形式で保存 [#a061799a]
文字化けする,という人は[[ここ:http://www.okada.jp.org/RW...
あるいは,[[ここ:http://www.sugi-shun.com/mt/2006/09/rps....
**図をPDF形式で保存 [#zb92afb4]
コマンド例を挙げておく.
例1
pdf("myfile.pdf")
plot(rnorm(100))
dev.off()
例2
N<-10
i<-0:10
p<-0.6
pdf("myfile1.pdf")
ypdf<-dbinom(i,N,p)
Title<-"Binomial Probability distibution with n=10 and p...
barplot(ypdf, xlab = "x", ylab = "P(X=x)",main=Title)
dev.off()
参考:[[http://people.su.se/~ma/R_intro/node47.html:http:/...
*データをcsv形式などで保存 [#aa1cab00]
write.table(X,"test.csv",sep=",")
などとすれば,R内でXと定義されているデータが,test.csvと...
*Rで数学 [#w0a9efbd]
**微分 [#u42f4b3d]
D(expression(x^2),"x")
D(D(expression(x^2),"x"),"x")
**整数部分を取り出す [#m5dfa2a5]
x <- pi * c(-1:1,10)
as.integer(x)
*Reference [#sf396c74]
**参考書籍 [#qe849ace]
-[[The R Tips―データ解析環境Rの基本技・グラフィックス活用...
**リンク [#oc0c672b]
特になし
終了行:
|このページについて|
''概要'':このページでは、「かなり基本的なコマンドなので、...
''親ページ'':このページの親ページは[[R]]です。
|目次|
#contents
----
*有用な目立たない関数 [#b88622e1]
**行列からNAを取り除く [#k2bfdd94]
~
数値(整数4桁、小数3桁)からなるデータフレーム、またはマト...
> # 例を作る
> x <- matrix(1:30, 5, 6)
> x[1,2] <- x[3,4] <- x[4, 6] <- NA
> x
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 NA 11 16 21 26
[2,] 2 7 12 17 22 27
[3,] 3 8 13 NA 23 28
[4,] 4 9 14 19 24 NA
[5,] 5 10 15 20 25 30
> # 適用 わずかにこれだけ
> y <- x[!is.na(rowSums(x)), !is.na(colSums(x))]
> y
[,1] [,2] [,3]
[1,] 2 12 22
[2,] 5 15 25
-x[complete.cases(x),complete.cases(t(x))] というのもあり
> x[complete.cases(x),complete.cases(t(x))]
[,1] [,2] [,3]
[1,] 2 12 22
[2,] 5 15 25
後者の方が効率がよいらしい.
> x <- matrix(1:30, 5, 6)
> x[1,2] <- x[3,4] <- x[4, 6] <- NA
> system.time(for(i in 1:100000) y <- x[!is.na(rowSums(x...
user system total user.c...
24.156 0.480 27.397 ...
> system.time(for(i in 1:100000) z <- x[complete.cases(x...
user system total user.c...
4.914 0.087 5.540 ...
行列のサイズにも依存する?
> x <- matrix(rnorm(1000000), 1000, 1000)
> x[sample(1000,50),sample(1000,50)] <- NA
> system.time(for(i in 1:100) y <- x[!is.na(rowSums(x)),...
user system total user.c...
27.518 2.444 32.602 ...
> system.time(for(i in 1:100) z <- x[complete.cases(x),c...
user system total user.c...
25.149 4.482 32.726 ...
**dataハンドリングをすべてRの中で行う(エクセルに頼らない...
edit.data.frame
package:utils
data.entry
package:utils
fix
package:utils
[[http://finzi.psych.upenn.edu/R/doc/manual/R-data.html:h...
{Rcmdr}
が関連するようである。例えば、
showData()
とか。
write.table()
edit()
とか。ここら辺はヘルプでもみましょう。
write.matrix()
{MASS}
も有用っぽい.
参考:
-[[http://cse.naro.affrc.go.jp/takezawa/r-tips/r/45.html:...
-[[http://cran.r-project.org/doc/manuals/R-data.pdf:http:...
-[[http://www.okada.jp.org/RWiki/index.php?%A5%C7%A1%BC%A...
**lsという関数が有用 [#ba271b80]
>ls()
とやると、自分がどんなオブジェクトを定義したか、一覧が見...
**rmという関数が有用 [#v0b13ca9]
>rm()
とやると、自分が定義したオブジェクトを消すことが出来ます...
**すべてのオブジェクトを消去する方法 [#j813cd85]
RGui→"その他"→"すべてのオブジェクトの消去"
混乱しないためには、新しい作業スペースを使うほうがいいか...
**Iという関数が有用 [#q3aa9601]
lm(x~y)
lm(x~y^2)
の二つは、同じ結果を返す。
lm(x~I(y^2))
とやると、ちゃんと二乗したものを説明変数とみなしてくれる。
**search()が有用. [#e4d431f1]
現時点でインストールされており,かつ,読み込まれているパ...
search()
**namesという関数が有用。 [#fc37c0fa]
[[Rを使って計量経済分析]]の例でいうと、
> summary(lm(I ~ Y + r1))->fit
> names(fit)
とやれば
[1] "call" "terms" "residuals" "coe...
[7] "df" "r.squared" "adj.r.squared" "fs...
attr()
attributes()
structure()
なども参照.
**strという関数が有用。 [#m4df6534]
[[Rを使って計量経済分析]]の例でいうと、
> summary(lm(I ~ Y + r1))->fit
> str(fit)
とやると
List of 11
$ call : language lm(formula = I ~ Y + r1)
$ terms :Classes 'terms', 'formula' length 3 I ~...
.. ..- attr(*, "variables")= language list(I, Y, r1)
.. ..- attr(*, "factors")= int [1:3, 1:2] 0 1 0 0 0 1
.. .. ..- attr(*, "dimnames")=List of 2
.. .. .. ..$ : chr [1:3] "I" "Y" "r1"
.. .. .. ..$ : chr [1:2] "Y" "r1"
.. ..- attr(*, "term.labels")= chr [1:2] "Y" "r1"
.. ..- attr(*, "order")= int [1:2] 1 1
.. ..- attr(*, "intercept")= int 1
.. ..- attr(*, "response")= int 1
.. ..- attr(*, ".Environment")=length 8 <environment>
.. ..- attr(*, "predvars")= language list(I, Y, r1)
.. ..- attr(*, "dataClasses")= Named chr [1:3] "numeri...
.. .. ..- attr(*, "names")= chr [1:3] "I" "Y" "r1"
$ residuals : Named num [1:105] -1.79 -6.04 -7.57...
..- attr(*, "names")= chr [1:105] "1" "2" "3" "4" ...
$ coefficients : num [1:3, 1:4] 7.821 2.090 -1.535 2...
..- attr(*, "dimnames")=List of 2
.. ..$ : chr [1:3] "(Intercept)" "Y" "r1"
.. ..$ : chr [1:4] "Estimate" "Std. Error" "t value" "...
$ aliased : Named logi [1:3] FALSE FALSE FALSE
..- attr(*, "names")= chr [1:3] "(Intercept)" "Y" "r1"
$ sigma : num 5.65
$ df : int [1:3] 3 102 3
$ r.squared : num 0.458
$ adj.r.squared: num 0.448
$ fstatistic : Named num [1:3] 43.2 2.0 102.0
..- attr(*, "names")= chr [1:3] "value" "numdf" "dendf"
$ cov.unscaled : num [1:3, 1:3] 0.19893 -0.00458 -0.02...
..- attr(*, "dimnames")=List of 2
.. ..$ : chr [1:3] "(Intercept)" "Y" "r1"
.. ..$ : chr [1:3] "(Intercept)" "Y" "r1"
- attr(*, "class")= chr "summary.lm"
**summaryとかsummary.lsとかpredict.lsとか [#s7f574a4]
[[ここ:http://www.okada.jp.org/RWiki/index.php?cmd=read&p...
**methods{utils} [#dd7b62d7]
[[RjpWikiのこのページ:http://www.okada.jp.org/RWiki/index...
たとえば、kfilter{sspir}の中身を見たい場合、
> kfilter
function (ss)
{
UseMethod("kfilter")
}
<environment: namespace:sspir>
としか表示されない。中身を知るために、
> methods(kfilter)
とやれば
[1] kfilter.SS kfilter.ssm
を得る。だから、
> kfilter.SS
とか
> kfilter.ssm
とか入力すれば関数の中身が見られる。
ところが、tsls(sem)の場合、
> tsls
function (y, ...)
{
UseMethod("tsls")
}
<environment: namespace:sem>
となるので、
> methods{tsls}
と入力しても
[1] tsls.default* tsls.formula*
Non-visible functions are asterisked
となって中身が隠蔽されている。
そこで、
> getS3method("tsls", "default")
や
> getS3method("tsls", "formula")
とすればやっと中身が見られる。
ちなみに、kfilterの場合でも
> getS3method("kfilter","SS")
とか
> getS3method("kfilter","ssm")
やっても同じ結果を得られる。
**system.time () {base} [#u1804d40]
-time() {base}
**色コード [#t8290469]
colors()
[[RwpWikiの"Rにおける色の名前":http://www.okada.jp.org/RW...
*グラフィック関連 [#yf112fe0]
**グラフィック一般 [#ycb20378]
[[RwpWikiの"Rのグラフィックスパラメータ ":http://www.okad...
**二つの図を同じwindowの中に分割して表示 [#hd724da8]
グラフィックスパラメータ指定関数
par()
を使います。
**3Dプロット [#oa1b4e05]
persp
を使えばよいです。これを使う際に注意点は、以下の例を参照。
> a<-1:10
> b<-6:20
> f<-function(x,y){x^2+y^2}
> persp(a,b,outer(a,b,f),theta = 30, phi = 30, expand = ...
> persp(a,b,outer(b,a,f),theta = 30, phi = 30, expand = ...
以下にエラーpersp(x, y, z, xlim, ylim, zlim, theta, phi,...
'z' 引数が不正です
> persp(b,a,outer(b,a,f),theta = 30, phi = 30, expand = ...
> persp(b,a,outer(a,b,f),theta = 30, phi = 30, expand = ...
以下にエラーpersp(x, y, z, xlim, ylim, zlim, theta, phi,...
'z' 引数が不正です
すなわち、persp(x,y,z)で、「x:x軸のベクトル」、「y:y軸...
**凡例を入れる [#q92a53ed]
x<-c(3,2,3,2,4,5,4,6,7,5,7,6,8,9,8,7,8,9)
plot(x,type="l",main="zu",xlab="yokojiku",ylab="tatejiku")
legend(locator(1),legend=c("NAME"),lty=c(1), lwd=c(1))
例えば,上のコマンドをそのままコピペしてRで実行してみまし...
**図をeps形式で保存 [#a061799a]
文字化けする,という人は[[ここ:http://www.okada.jp.org/RW...
あるいは,[[ここ:http://www.sugi-shun.com/mt/2006/09/rps....
**図をPDF形式で保存 [#zb92afb4]
コマンド例を挙げておく.
例1
pdf("myfile.pdf")
plot(rnorm(100))
dev.off()
例2
N<-10
i<-0:10
p<-0.6
pdf("myfile1.pdf")
ypdf<-dbinom(i,N,p)
Title<-"Binomial Probability distibution with n=10 and p...
barplot(ypdf, xlab = "x", ylab = "P(X=x)",main=Title)
dev.off()
参考:[[http://people.su.se/~ma/R_intro/node47.html:http:/...
*データをcsv形式などで保存 [#aa1cab00]
write.table(X,"test.csv",sep=",")
などとすれば,R内でXと定義されているデータが,test.csvと...
*Rで数学 [#w0a9efbd]
**微分 [#u42f4b3d]
D(expression(x^2),"x")
D(D(expression(x^2),"x"),"x")
**整数部分を取り出す [#m5dfa2a5]
x <- pi * c(-1:1,10)
as.integer(x)
*Reference [#sf396c74]
**参考書籍 [#qe849ace]
-[[The R Tips―データ解析環境Rの基本技・グラフィックス活用...
**リンク [#oc0c672b]
特になし
ページ名: