初心者のための R および RjpWiki に関する質問コーナー

新規投稿はできません


過去の記事のアーカイブ



主成分分析

sumi (2008-11-15 (土) 12:14:00)

初歩的な質問で大変恐縮です。

主成分分析したものをバリマックス回転、もしくはプロマックス回転するためにはどうしたらよいのでしょうか?

また因子分析を実行しようとすると「これらの初期値からは最適化できません」と出てしまいます。

R version 2.7.2 (2008-08-25) i386-pc-mingw32

locale: LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932; LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932

attached base packages: [1] stats graphics grDevices utils datasets methods base

RのARモデルのAICについて

野沢菜 (2008-11-14 (金) 21:52:52)

お世話になります。

ARモデルのAIC値について質問致します。

どうやらRのARモデルのAIC値は最小モデルの値を0とし、相対値を返して来ていると言うのまでは判ったのですが、それにしても計算が合わないので、困っています。

以下のような実験をしてみました。

まずNileをAR(2)で計算させると

ar(Nile,order=2)

Call:
ar(x = Nile, order.max = 2)

Coefficients:
1 2
0.4081 0.1812

Order selected 2 sigma^2 estimated as 21247


sigma^2を21247と推定してきました。同様にar(Nile,aic=FALSE,order.max=3) とやると、21204 と推定してきます。

ここでAICを求めると、

ar(Nile,order=3)$aic
0 1 2 3
27.8938963 1.3373691 0.0000000 0.7625609


と、AR(2)が最小で0、AR(3)は0.7625609だと言っています。一旦整理します。

AR(2)σ^2 = 21247
AR(3)σ^2 = 21204
AR(2)AIC = 0.0000000
AR(3)AIC = 0.7625609

と言う事なのですが、回帰のAICでlength(Nile)が100なのでAICを計算させて
差をみると

n<-100;si2<-21247;m<-2;

AIC2 <- n*(log(2*pi)+1+log(si2))+2*(m+2)

n<-100;si2<- 21204;m<-3;

AIC3 <- n*(log(2*pi)+1+log(si2))+2*(m+2)

AIC3-AIC2
[1] 1.797413

と、AR(3)AIC = 0.7625609 とは、かけ離れた値になってしまいます。

私は、どこをどう間違っているのか、ご指摘をお願い致します。

二元配置分散分析の求め方

flyer (2008-11-11 (火) 15:25:38)

いつもお世話になっています。
以下のようなデータで分散分析を二元配置の対応なしで分散分析を行おうとしたのですが、summary(aov(***))で得られるデータがF値のないものとなります。
収穫量に対しての要因が品種と試験場が存在すると言う設定なのですが、aovの使い方が違うのでしょうか。
よろしくお願いします。



収穫量

[1] 68 70 72 71 73 74 73 74 73 73 72 74 73 71 72 69 71 72 72 69

品種

[1] A1 A1 A1 A1 A1 A2 A2 A2 A2 A2 A3 A3 A3 A3 A3 A4 A4 A4 A4 A4

Levels: A1 A2 A3 A4

試験場

[1] B1 B2 B3 B4 B5 B1 B2 B3 B4 B5 B1 B2 B3 B4 B5 B1 B2 B3 B4 B5

Levels: B1 B2 B3 B4 B5

> summary(aov(収穫量~試験場*品種))

> Df Sum Sq Mean Sq

>試験場 4 8.2000 2.0500

>品種 3 26.8000 8.9333

>試験場:品種 12 22.2000 1.8500

xtabsとftableで複数の要素を行に入れたい場合

たけ (2008-11-10 (月) 22:05:27)

下記のようなデータセットで、地点 緯度 経度 年 月の列と各種類の列を持つ表に書き換えたく、xtabsとftableを下記のように実行したのですが、2点問題があり困っております。
1)地点 緯度 経度 年 月全部の組み合わせを出力してしまい、整形が必要ですし、大きなデータになると実行時間がかかりメモリもパンクします。
2)出力されたテーブルは行の値は属性として入った状態になっており、y[3,]などと行を取り出す指定をしても、地点名や緯度経度の入った行の値を取り出すことは簡単にはできません。間を空けずに各行に地点名などの値を格納したいのです。
以上の2点について、xtabsとftableを用いたものでなくても構いませんので、うまい対処方法をご存知の方がいましたらお教え頂ければ幸いです。


x <- read.csv("test.csv")
y <- ftable(xtabs(値~地点+緯度+経度+年+月+種類,x))


データの例:test.csv
 年,月,地点,緯度,経度,種類,値
平成15年,1月,東京,139.766084,35.681382,いちご,10
平成15年,8月,東京,139.766084,35.681382,いちご,20
平成16年,1月,東京,139.766084,35.681382,いちご,10
平成16年,8月,東京,139.766084,35.681382,いちご,25
平成15年,1月,つくば,140.111234,36.082744,いちご,10
平成15年,8月,つくば,140.111234,36.082744,いちご,30
平成16年,1月,つくば,140.111234,36.082744,いちご,10
平成16年,8月,つくば,140.111234,36.082744,いちご,45
平成15年,1月,東京,139.766084,35.681382,みかん,100
平成15年,8月,東京,139.766084,35.681382,みかん,20
平成16年,1月,東京,139.766084,35.681382,みかん,100
平成16年,8月,東京,139.766084,35.681382,みかん,25
平成15年,1月,つくば,140.111234,36.082744,みかん,100
平成15年,8月,つくば,140.111234,36.082744,みかん,30
平成16年,1月,つくば,140.111234,36.082744,みかん,100
平成16年,8月,つくば,140.111234,36.082744,みかん,45

rbindするデータフレームの数が多い場合・・・

Shiro (2008-10-31 (金) 06:56:27)

たとえば、各年のデータを含むデータフレーム、
df.2000, df.2001, df.2002, df.2003, df.2004, df.2005
があるとし、これを以下のようにバインドするとします。
df.all <- rbind (df.2000, df.2001, df.2002, df.2003, df.2004, df.2005)
しかし、もしもバインドしたいデータフレーム数が膨大に増えてくると、書き連ねるのが長くなってしまいます。
そこで、下記のようにデータフレーム名を作成してみました。
period = c(2000:2005)

# データフレーム名の作成
paste("df", period, sep = ".")
[1] "df.2000" "df.2001" "df.2002" "df.2003" "df.2004" "df.2005"
そして、これでは単なるcharacterなので、get関数で下記のようにしてみましたが、うまくいきません。
df.all <- rbind (get(paste("df", period, sep = ".")))
初心者です。調べた結果、pasteで名前を作るまではできたのですが・・・その次のステップでgetくらいしか見つけられず、苦慮しています。お力添えを頂ければ大変ありがたいです。

範囲の指定

tt (2008-10-31 (金) 02:55:21)

非常に初歩的な質問なんですが、hist()を使うときに、横軸の範囲を指定するにはどうしたらよいのでしょうか?

R で作る EPS ファイル

[[ ]] (2008-10-29 (水) 21:32:23)

postscript(file, family="Japan1Ryumin") で作る,日本語フォントを含む eps ファイルは,「不正なepsファイルだ」と言われて,Photoshop 等では開くことが出来ません。LaTeX からは \includegraphics でちゃんと挿入できるんですけど。どこかを弄ることで,解決されるのでしょうか。
postscript(file) でローマ字だけのファイルなら,問題は生じません。
Windows, Mac 共に,同じ問題があるようです。

Rを用いたランダム効果解析

初心者random (2008-10-26 (日) 14:24:04)

教えてください。以下のデータ(data01)は、
2元配置の変量モデル(変量因子groupAと変量因子groupB、それぞれ要因化)
における、2つの変量因子のeffectへの影響を解析するものです。

random効果として、groupAおよびgroupBを指定し、関数lme()を用いて解析したいのですが、
random効果の項の設定をうまくできません。

random効果として、
groupA+groupB+groupA*groupB ---(1)
を設定したく考えております。

model<-lme(effect~1,random=***) この部分(***)の設定がわかりません。

これまで、random=~1|groupA, random=~1|groupA/groupBは試みましたが、
(1) groupA+groupB+groupA*groupB 
の設定ができず、質問させていただきました。

よろしくお願いします。

data01

  groupA groupB effect

1 1 1 13.2
2 1 1 11.9
3 1 2 16.1
4 1 2 15.1
5 1 3 9.1
6 1 3 8.2
7 2 1 22.8
8 2 1 18.5
9 2 2 24.5
10 2 2 24.2
11 2 3 11.9
12 2 3 13.7
13 3 1 21.8
14 3 1 32.1
15 3 2 26.9
16 3 2 28.3
17 3 3 15.1
18 3 3 16.2
19 4 1 25.7
20 4 1 29.5
21 4 2 30.1
22 4 2 29.6
23 4 3 15.2
24 4 3 14.8

罫線を点線にしたい

psa (2008-10-24 (金) 10:24:29)

par(tck=1)でグラフ上に罫線を入れたのですが、その罫線を好きなように変更したいと考えています。たとえば、x軸の10ごとに点線の罫線をいれて、50のところを太い罫線にするようなコンビネーションはどうしたらできますでしょうか?プログラムは以下のようにしています。よろしくお願いいたします。
par(tck=1)
plot(1:100)

epsファイルの作成

taromaru (2008-10-23 (木) 16:42:25)

WindowsXP上で、R2.7.2を使っております。epsファイルをRから作ってtexに読み込もうとすると、ghostscriptがうまくビットマップファイルを作ってくれず、dviファイルに図が表示されません。例えば、

 hist(rnorm(100))
 dev.copy2eps(file="temp.eps")


temp.epsというファイルはできますが、tex に読み込んでコンパイルしたあとdviファイルを開くと

Failed to make temp.bmp by the command

というエラーメッセージが出て、dviファイルには図が表示されません。Ghostscriptのヴァージョンは、8.63です。そこで、GSView4.9で temp.eps を開こうとすると、

Unknown in Prolog section at line 34:

 %%IncludeResource: CID fake Bold font HeiseiKakuGo-W5



Unknown in Prolog section at line 71:

 %%IncludeResource: CID font HeiseiKakuGo-W5-EUC-H


(以下省略)

といったエラーメッセージが出て開けません。そこで、

 dev.copy2eps(file="temp.eps", paper="special", onefile=FALSE)


といったオプションもつけてみましたが、結果は同じです。どなたかご教示いただけないでしょうか。

最尤法による最適関数の導出について

Saito (2008-10-22 (水) 21:35:20)

いつもお世話になっております。
似たような質問、トピックを捜しましたが見当たらなかったため質問させてください。
手持ちのデータに当てはまりそうな関数を自分で作成して、そのパラメータを最尤推定するにはどのようにすればよいでしょうか。例えば、私が今手元に持っているデータは、

a<-rep(0,50)
b<-rep(1:2,length=50)
c<-rep(3:10,length=50)
d<-c(a,b,c)
d2<-as.data.frame(table(d))
d2$Freq<-(d2$Freq)/d2[1,2]
plot(d2$d,d2$Freq)

のような形をしており、これに尤もらしく当てはまりそうな関数として、

f<-function(sig,beta) 1-exp(-(as.numeric(d2$d)/sig)^-(beta))

を関数例として考えました(あんまりいい例ではないかもしれませんが…)。このパラメータsigとbetaの値を最尤推定したいのです。最尤法はもちろん、optim()、mle()、fitdistr()などは勉強したのですが、何か勘違いしているのか他に適切な関数があるのか、中々思うようにいきません。どなたか、ご存知の方がいらっしゃいましたら手法などご教授いただけると幸いです。
なお、環境はWindowsXP、R-2.7.2です。
よろしくお願いいたします。

すみません、長くなりましたが私が最初やりたかったことはほとんど解決しています。ただ残る疑問として上記をまとめますと、 1.nls()とoptim()での違いは何か?別々の値が推定された場合どのように解釈すればよいのか? 2.xが離散値の場合、どちらが適切なのか? 3.2.でどちらでもよいというような場合、AICを用いてnls()とoptim()間でモデル選択を行うことはやってもよいのか?? です。ご教授いただければ幸いです。

ちなみに私がうまくいかないといっていたのは、functionの中身でsplに相当する部分をを変な組み込み方にしていたため、値が返ってこないというものでした。要はoptim()を理解できていなかったため起こったようです。-- Saito 2008-10-23 (木) 13:05:17

非アルファベット・数字のソート

R初心者 (2008-10-22 (水) 18:41:13)

以下のような例は,どういう事になっているんでしょうか。UTF-8 だと,その順序だよと言うことでしょうか。

> sort(c("青", "赤", "黄", "緑", "紫"))
[1] "紫" "緑" "赤" "青" "黄"

日本語の読みの順序でソートするにはどのようにしたらよいでしょうか。自分で関数を書かないといけませんか?

> sessionInfo()
R version 2.8.0 Patched (2008-10-20 r46764) 
i386-apple-darwin9.5.0 

locale:
ja_JP.UTF-8/ja_JP.UTF-8/C/C/ja_JP.UTF-8/ja_JP.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

です。なんとなく予感がして,UNIX上のR-1.8.1(sessionInfo がありません(^_^;)だと,

> sort(c("青", "赤", "黄", "緑", "紫"))
[1] "黄" "紫" "青" "赤" "緑"
> Sys.getlocale()
[1] "ja_JP.EUC/ja_JP.EUC/C/C/ja_JP.EUC/C"

なるほど,なんとかできるのかな?

SVR(support vector regression)をipopソルバーで実装する方法

tottori (2008-10-20 (月) 03:08:30)

SVMの回帰への拡張であるSVRをkernlabパッケージにあるipopソルバー(Quadratic Programming Solver)を用いて解きたいと考えています。
分類(通常のSVM)の場合にはhelp(ipop)の例のように

H <- kernelPol(rbf,x,,y)
c <- matrix(rep(-1,m))
A <- t(y)
b <- 0
l <- matrix(rep(0,m))
u <- matrix(rep(C,m))
r <- 0


と指定することで動きますが、回帰の場合にはどのように指定すればよいか分かりません。ラグランジュ乗数が分類の場合と異なった形で出てくるため、自分なりに試行錯誤しましたが解決できませんでした。

kenlabに関する文献「kernlab – An S4 Package for Kernel Methods in R」のipopに関する記述の最後に[This optimizer can be used in regression, classification, and novelty detection in SVMs]とあり、回帰問題にも用いれると考えているのですが…

アドバイスを頂きたいです。
よろしくお願いします。

flicker雑音

kd (2008-10-16 (木) 10:23:37)

flicker雑音をRで生成する良い方法はあるでしょうか? (それとも,アルゴリズムを考えて書き下す方法しかないでしょうか?

C言語のプログラムの中身

C言語のプログラムの中身 (2008-10-15 (水) 15:44:22)

isoMDSという関数を改良したくて,中身を見たのですが,その中で



  on.exit(.C(VR_mds_unload))
  .C(VR_mds_init_data, as.integer(nd), as.integer(k), as.integer(n), 
      as.integer(ord - 1), as.integer(order(ord) - 1), as.double(y), 
      as.double(p))
  tmp <- .C(VR_mds_dovm, val = double(1), as.integer(maxit), 
      as.integer(trace), y = as.double(y), as.double(tol))


という部分がありました.調べた結果,「.C()」はC言語のプログラムを呼び出すものということが書かれていましたが,この中身,すなわちVR_mds_init_dataなどの中身を知りたい場合はどうすればよいのでしょうか?

よろしくお願いします.

下限値を0に固定してプロット

ぬえ (2008-10-12 (日) 07:17:22)

散布図行列を描くときに、軸の下限値を0に固定(上限値は自動設定)って可能のなのでしょうか。
パラメータごとに値のレンジがかなり違うので、単純にxlim、ylimを指定するだけでは上手くいきません。

たぶん、xlim=range(x)というような処理がどこかでされてるんだと思うので
それをxlim=range(c(0,x))に変えられたらいいんですけど。

構文チェックの方法

syou6162 (2008-10-10 (金) 23:21:52)

Rのコマンドラインオプションなどで構文チェックをする方法はないでしょうか?R --helpやR CMDのほうのヘルプなども一通り見てみましたが、見つけることができませんでした。

Rubyで言えば
$ ruby -c hoge.rb
のようなものを考えています。

データフレームのマッチング

Lee (2008-10-09 (木) 05:55:27)

おそらく非常に簡単にできるのではないかとは思うのですが、検索のキーワードが下手なせいか、適切な関数なり手段なりを見つけることができず、困っております。ご教示頂けたらとても助かります。

下のような2つのデータフレームにおいて、df.A のColumn1の値 (数字もしくは文字列) に一致するものをdf.B のColumn1からピックアップし、それに対応するdf.BのColumn2の値を、df.Aの横に加え、新たなデータフレームを作成したいのです。ここで、df.AのColumn1には、a, b, c, d が複数含まれますが、df.BのColumn1には、a, b, c, d, e, …はそれぞれ1つしかない、すなわち、1対1対応になっています。ただし、df.Aには含まれない g, h, …等もdf.Bには含まれます。
たとえば、df.AのColumn1は日付、Column2はその日に採取した複数のデータだとします。そして、df.BのColumn1とColumn2はそれぞれ日付とその日の降雨量だとします。そうすると、日付から降雨量のデータをピックアップして、その日に採取したデータとの関係を見るためのデータフレームを作成したい、ということになります。

df_A df_B

	Column1	Column2			Column1	Column2

Row1 a 5.5 Row1 a 102
Row2 a 2.6 Row2 b 203
Row3 a 3.2 Row3 c 302
Row4 a 5.6 Row4 d 202
Row5 b NA Row5 e 102
Row6 b 6.3 Row6 f 301
Row7 b 10.2 Row7 g 602
Row8 c 3.9 Row8 h 302
Row9 c 5
Row10 a 6
Row11 c NA
Row12 d 8.2
Row13 d 2.9
Row14 b 3.5
Row15 a 6.2
Row16 d 4.6
以下続く

新df

	Column1	Column2	

Row1 a 5.5 102
Row2 a 2.6 102
Row3 a 3.2 102
Row4 a 5.6 102
Row5 b NA 203
Row6 b 6.3 203
Row7 b 10.2 203
Row8 c 3.9 302
Row9 c 5 302
Row10 a 6 102
Row11 c NA 302
Row12 d 8.2 202
Row13 d 2.9 202
Row14 b 3.5 203
Row15 a 6.2 102
Row16 d 4.6 202
以下続く

作業スペースの保存

tt (2008-10-08 (水) 16:31:54)

作業スペースの保存を実行すると、

以下にエラー gzfile(file, "wb") : コネクションを開くことができません

追加情報:  Warning message:

In gzfile(file, "wb") :

 圧縮されたファイル 'C:\Documents and Settings/…


とでできて保存できません。
どうしたらよいのでしょうか?

Rcmd BATCH file.Rでplot表示を残すには?

ISHIMARU (2008-10-08 (水) 16:25:40)

R-2.7.2をWindows XPで使用しています。
たとえば、a.Rというファイルにplot(1:5)と記載して、Rcmd BATCH a.Rと実行しても、
グラフが表示されず(残らず)、何事もなかったかのように終了してしまいます。
表示を残す方法があるのでしょうか。
初級Q&A アーカイブ(4) の「R CMD BATCHの使い方」を参考にして、
.Rprofileにlibrary(grDevices)と記載もしてみましたがだめでした。
よい方法がありましたらご教授ください。

Windows版Rで,UTF-8が文字化けしない?

(2008-10-07 (火) 14:26:12)

現在TechnoratiのAPIでブログの記事を引っ張ってきて,RMeCab等を用いて計量テキスト分析,というのに挑戦しています。
RMeCabに通す段階で,不可解な現象に出会い,困惑してしまいました。
APIの返り値はUTF-8なのですが,それがなぜかCP932のR上で文字化けせずに表示されてしまいます。
つまり,

text1 # APIで取得したテキスト
[1] "日本語" # 文字化けしない

(text2 <- "日本語") # R上で付値
[1] "日本語" # 当然化けない

text1 == text2
[1] FALSE

(iconv(text1, "UTF8", "CP932") == text2 # 明示的に変換
[1] TRUE

となります。変換せずそのままRMeCabに突っ込んだところ,「正しく」文字化けして返ってきました。
ということで,この問題自体は解決しているのですが,根本的な原因がわかりません。
なぜこのようなことが起こるのでしょうか?
(変な言い方ですが)ちゃんと化けてくれたほうがありがたいのですが,そのように設定することは可能でしょうか?
不明瞭な質問で申し訳ないのですが,よろしくお願いします。
環境は以下です。そのほか,設定はなにもいじっていません。

sessionInfo()
R version 2.7.2 (2008-08-25)
i386-pc-mingw32
locale:
LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] RMeCab_0.61 XML_1.96-0
loaded via a namespace (and not attached):
[1] tools_2.7.2

正規表現にマッチした部分の取り出し

うち (2008-10-06 (月) 20:55:07)

grep(, value=T)で試してみましたが,マッチした文字列全体が返されてしまいます。正規表現にマッチした部分のみを取り出すには,どのようにしたら良いか御教示いただけないでしょうか。substring()を正規表現で制御するようなイメージです。

> # /に挟まれた数字のみ抜き出したいが...
> grep("(?<=/)\\d*(?=/)", c("2007/1/1","2007/2/2", "2007/12/31"), value=T, perl=T) 
[1] "2007/1/1"   "2007/2/2"   "2007/12/31"

xtabで得たテーブルをdataframe化する

ssamu (2008-10-06 (月) 05:17:40)

こんにちは、お世話になります。
今までもっぱら文系の道を歩んできましたが、将来の研究のため統計ソフトの操作を身につけようと頑張ることにしました。
初歩的な質問で大変恐縮ですが、xtab関数を使用して得た結果を通常のdata.frameのように操作することってできますか?
(もしくは、data.frame形式に変換できないでしょうか?)
[,2]のように指定して列を切り出したり、という操作。

例えば、LanguageRのパッケージの中にあるwarlpiriというデータから

xtabs(~Speaker+CaseMarking, data = CaseMarking)
TABLE1=xtabs(~Speaker + CaseMarking , data = CaseMarking)



の様に集計を行ったとして、この「TABLE1」を再利用/加工したいのですが…。

間接的な回答でもご教示いただけると非常にありがたいです。

同じ内容のデータを複数回とってあり、その回数を変数としてあるデータ

やぼてん (2008-10-04 (土) 16:19:23)

お世話になります。<R本読むだけ>から、ようやく<Rを使いはじめた>に状態levelを変えつつある初心者です。つぎのような重複データの処理がわからず困っています。

個体ごとに、生きている葉の数と死んでいる葉の数が数えあります。その結果、変数として、NO(=個体番号)、TREAT(=処理濃度(%))、D_or_A(=生死(0か1))、NO_LEAF(=葉の数)の4つが得られています。データは,たとえば

32 15 0 12
32 15 1 7
33 50 0 8
33 50 1 18
というものになります。

分かりたいのは、生きている葉の数、死んでいる葉の数をどのようにすれば解析中に入れられるのかということです?

glm(D_or_A ~ TREAT, binomial, weight=LEAF_NO)
としてもうまくいきませんでした。

よろしくお願いします。

因子の置換(追加)

うち (2008-10-03 (金) 19:58:06)

因子を置換(追加)する処理をしたいのですが,下記のようなコードで実行すると意図しない結果になってしまいます。置換対象を前もって文字列化しておくことで意図した処理はできたのですが,因子を直接置換(追加)する方法を教えていただけないでしょうか。

> iris2 <- iris
> unique(iris2$Species) 
[1] setosa     versicolor virginica 
Levels: setosa versicolor virginica
> 
> #Sepal.Length>7.5以上の種名をhogeに置換
> iris2$Species <- ifelse(iris2$Sepal.Length>7.5, "hoge", iris2$Species) 
> class(iris2$Species) #文字列になってしまう
[1] "character"
> iris2$Species <- as.factor(iris2$Species) #後で因子に変換しても
> unique(iris2$Species) #変になってしまう
[1] 1    2    3    hoge
Levels: 1 2 3 hoge
> iris2$Species <- as.character(iris2$Species) #先に文字列化しておくと
> 
> iris2$Species <- ifelse(iris2$Sepal.Length>7.5, "hoge", iris2$Species) 
> iris2$Species <- as.factor(iris2$Species)
> unique(iris2$Species) #意図したようになる
[1] setosa     versicolor virginica  hoge      
Levels: hoge setosa versicolor virginica

heatmapのセルの色

hm (2008-10-01 (水) 14:57:21)

行列xの要素は0と1の2値データです。(i) heatmapにおいてデフォルトでセルの色が2色以上になっているは、どのような意味があるのでしょうか?(ii) heatmapにおいてセルの色を0なら黒色、1なら赤色にしたいのですが、どうすればよろしいでしょうか?

set.seed(101)
x = matrix(sample(c(0,1), 100, replace=TRUE),10,10)
heatmap(x)

Meadow+ESSにおける文字化け

Kai (2008-10-01 (水) 13:51:45)

お世話になります。しょうもない疑問で申し訳ありませんが、以下について一考願えませんでしょうか?

使用環境
・Windows XP
・Meadow 3.00
・ESS-5.3.8
・R-2.7.1
において、日本語データを格納したデータをedit()で開くと、日本語のみ文字化けしてしまいます。ただし、
・Meadow上では、日本語データを文字化けさせないで表示できる
・edit上で、文字化けした項目を選択すると、正しい日本語が表示され、他の項目に移ると、文字化けしたものに戻ってしまう
・Rだけで同様の処理をすると、edit()上でも文字化けは起っていない

説明が不明瞭で申し訳ありませんが、Meadow+ESS+R環境で、edit()を用いてデータを表示させたときのみ、文字化けが発生しているようです。ただし、化けているだけで、実際の値は入っているようです。

文字化けをなくす方法はありませんでしょうか?

demoおよびpackageのhelpについて

KW (2008-09-30 (火) 10:45:56)

初めまして,初歩的な質問で申し訳ないのですが,demo()やlibrary(help="")と入力すると以下のような警告メッセージが表示されます。

> demo()
Warning message:
In file.show(outFile, delete.file = TRUE, title = paste("R", tolower(x$title))) :


> library(help=stats)
Warning message:
In file.show(outFile, delete.file = TRUE, title = gettextf("Documentation for package '%s'",  :


使用環境は以下の通りです。

> sessionInfo()
R version 2.7.2 (2008-08-25) 
i386-pc-mingw32 
locale:
LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base 
> .libPaths()
[1] "C:/PROGRA~1/R/R-27~1.2/library"
> .packages(all.available = TRUE)
[1] "base"       "boot"       "class"      "cluster"    "codetools"  "datasets"   "foreign"    "graphics"  
[9] "grDevices"  "grid"       "KernSmooth" "lattice"    "MASS"       "methods"    "mgcv"       "nlme" 
[17] "nnet"       "rpart"      "spatial"    "splines"    "stats"      "stats4"     "survival"   "tcltk"   
[25] "tools"      "utils"  ~

通常のhelpメニューは表示されます。またパッケージも普通に使えるので,問題はないと思います。pathやDoc関係で問題があると思うのですが,詳しい解決方法をご享受できればと思っています。よろしくお願いします。

version 2.7.2 日本語版ではなく英語版で使いたい

Rei (2008-09-28 (日) 20:05:42)

お世話になります。
最新バージョン 2.7.2 をインストールしたところ、以前のバージョンではインストール時に日本語版にするという選択をしなければ、英語版になったと思うのですが、本バージョンではどうやっても日本語版になってしまいます。英語版にする、あるいは、英語版をインストールする方法をご存じの方がいらっしゃいましたらご教示頂ければ幸いです。
(1) 使用環境: Windows Vista
(2) 使用PC: 日本語PC
(3) インストールに使用する言語を英語にしたが同様であった。
(4) ミラーサイトをUSAでダウンロードしたが同様であった。

分散の期待値を求めたい

お団子 (2008-09-25 (木) 08:05:39)

Saitoさんごめんなさい間違った場所に投稿しました。再投稿します。

SASでは、次のようにプログラムすると、下記のような
分散の期待値が求められますが、これをRで実行する方
法(関数)はあるのでしょうか?

model Data = R A R(A) B A*B R(A B) / ss2 e2;
random R R(A) R(A B);

変動因 Type II 期待平均平方
R Var(Error) + Var(R(A*B)) + 2.8182 Var(R(A)) + 11 Var(R)
A Var(Error) + Var(R(A*B)) + 2.8765 Var(R(A)) + Q(A,A*B)
R(A) Var(Error) + Var(R(A*B)) + 2.7273 Var(R(A))
B Var(Error) + Var(R(A*B)) + Q(B,A*B)
A*B Var(Error) + Var(R(A*B)) + Q(A*B)
R(A*B) Var(Error) + Var(R(A*B))

image()でカラーバー(凡例?)を表示したい

(2008-09-23 (火) 15:52:51)

場所を間違えて質問してしまったようでご迷惑をお掛けいたしました。
以下原文ですが、宜しくお願いいたします。

「contour()ではカラーバーが自動的に右側に描写されますが
これをimageの方で表示することは出来ないのでしょうか?
helpを読んでもそのような記述は見当たらず・・・質問させて頂きます。」

wiki内でimageやカラーバーといった単語検索を試しましたが見つかりませんでした。。すみません。

dev.off()等の出力をコントロールするには?

ichigo (2008-09-19 (金) 17:04:34)

たとえば

>postscript()
>plot(1:10)
>dev.off()

とすると

postscript
         2

と、デフォルトで表示されると思うのですが、これを出さない方法はありますでしょうか.
いろいろ試したり、検索したりしたのですがわからなくて困っています.

  • options()には、これ関連のオプションはなさそう
  • Rを起動するときの「--slave」オプションでも抑制できない.
  • (dev.off())とかやっても、出力されてしまう(当然ですか(汗).
    環境は R version 2.4.1 (2006-12-18)
    i686-pc-linux-gnu
    です.よろしくお願いします.

data.frameの列数

kd (2008-09-18 (木) 23:23:37)

data.frameに関するエラーメッセージ(下記例,R 2.7.2)なのですが,日本語としては,「列の長さ」の方が正確と思えるのですが(「列数」ではなくて),R(のdata.frame)では第1列(もしくは第2列)の「列数」という言い方をするのでしょうか?

> test<-data.frame(c(1:2),c(1:3))
    以下にエラー data.frame(c(1:2), c(1:3)) : 
    引数は異なった列数を意味します:  2, 3

ある範囲に含まれる生物の数をカウントするには

Saito (2008-09-17 (水) 22:50:20)

いつもお世話になっています。
似たような質問がないか探しましたが、見つけられなかったので質問させてください。(ただ、gstatパッケージでのクリギングについてという記事が最も近い感じではありました)

ある調査区域を調査して、区画ごとにそこにいた生物の個体数を数えています。サンプルとしては以下のようになります。点線で囲まれた30個の長方形がそれぞれの区画です(本当はx軸を0.1刻みで網をつけ、60個にしたかったのですがうまくいきませんでした。それについてもご教授していただけると幸いです)。

lon=runif(20,131,132)
lat=runif(20,46,49)
ss=rpois(20,5)
d=data.frame(lon,lat,ss)
with(d,
    {
plot(lon, lat, col=as.factor(ss),
          xaxp=c(131,132,10), ylim = c(46, 49), panel.first = grid(),
          )
}
)

ここで質問なのですが、それぞれの区画での合計発見数(ssの値に限らず1発見1カウント)、および総個体数(sum of ss)を算出するにはどのようなプログラムを書けばよいのでしょうか。tapplyやexpand.gridなどで色々やってはみたのですが…。
環境はWindowsXp, R-2.7.2です。

どうかよろしくお願いします。

Windows版 R-2.7.1 で日本語ファイルパスはダメですか?

(2008-09-17 (水) 17:50:44)

メニュバーから File | Source R code... を選択し,日本語を含むファイルパスにあるコードを読み込もうとすると,下記のようなエラーが発生します.

Error in file(file, "r", encoding = encoding) :

 cannot open the connection

In addition: Warning message:
In file(file, "r", encoding = encoding) : cannot open file 'H:\・・渰渰dž>

OSはWindowsXP,Rのバージョン2.7.1です.ちなみに,R-2.4.1では,全く同じマシン環境で全く同じ操作をしても問題無しでした.どなたか解決策を教えていただけないでしょうか.

ロジスティック回帰分析におけるsommersDの求め方

basel (2008-09-17 (水) 12:16:01)

ans<-glm(y~x,family=binomial(link="logit"),data=ds)
でロジスティック回帰分析を行った後に、「SommersD」を求めたいのですが、どのようにしたら良いのでしょうか?

コンジョイント分析

マーケター (2008-09-16 (火) 17:18:27)

コンジョイント分析のできるパッケージはないでしょうか

変動パターンが似ているもの同士をクラスタリングすることについて

R初心者 (2008-09-15 (月) 16:38:52)

複数の遺伝子の発現を数時間毎に測定し、それをデータとしてまとめて、その発現のパターンをRを用いてクラスタリングしようと考えています。
その際に、1,2,3...と2,3,4...といったような、生じる値は異なっていても、数字の変動の傾向(例の場合だと、1ずつ増えるのでパターンが似ている。)がよく似ているもの同士(つまり、増え方を考慮しないもの。y=xとy=x+1のような関係であるもの)をクラスタリングするスクリプトはどうつくればいいのか、途方にくれています。ご存知の方がいらっしゃたら教えてください。宜しくお願いします。

連続して計算された値を順に書き出したい

Saito (2008-09-11 (木) 20:34:09)

いつもお世話になっています。
既出でしたら申し訳ありません。似たような例を探したのですが、見当たらなかったので質問させてください。たとえばforなどを使って順に計算された値をすべて書き出すにはどのようにかけばよいでしょうか。たとえば、0,1を99個生成しそれぞれを数えたものと、100個生成しそれぞれ数えたものをくっつけると、

> r=0
> t=0
> for(i in 1:99){
> ifelse(sample(0:1,1)==0,r<-r+1,t<-t+1)
> }
> c1=data.frame(r,t)
> 
> r=0
> t=0
> for(i in 1:100){
> ifelse(sample(0:1,1)==0,r<-r+1,t<-t+1)
> }
> c2=data.frame(r,t)
> c3=merge(c1,c2,all=T)
> c3
>   r  t
> 1 45 54
> 2 48 52

となります。ここでは99と100というたった2つの場合ですが、本当は反復数を自動で変えてもっと多くして、rとtの値を一覧で見たいのですが、なかなか思うようにできません。どなたかご教授いただけたら幸いです。
なお、OSはWindowsXp、Rのバージョンは2.7.2です。

plot図の保存方法について

basel (2008-09-11 (木) 19:36:05)

たとえばboxplotを作図してjpegで保存したい場合、
bp<-boxplot(a~b)
save(bp,file="bp.jpeg")
ではだめだったのですが、何が原因なんでしょうか?

clip()の動作がよく分かりません。

hanageishi (2008-09-09 (火) 12:02:03)

clip()が期待通りに動作してくれません。
使用環境は WindowsXP, R version 2.7.1 (2008-06-23)です。

以下のようにすれば、par()$usrはc(0.96,2.04,2.96,4.04)ですが、clip()の値は左側に広げてあるので、(0.96,3.2)の点はaxisにかかるものの半欠けにならないことを期待しました。ところが実際には半欠けになります。

> windows()
> plot(1:2,3:4)
> clip(0.9,2,3,4)
> points(0.96,3.4)

ところがなぜか、そのあともう一度clip()を呼び出すと、今度は半欠けにならずにプロットされます。

> clip(0.9,2,3,4)
> points(0.96,3.2)

ただclip()を二回立て続けに呼び出しただけではだめなようで、clip()の前にpoints()が実行されていることが必要のようです。そこまでは分かったのですが、原因が分かりません。ちなみにplot()以降は、par()の中身は一切変更されていなかったようです。もしどなたか原因をお分かりでしたらご教示ください。

quantileの逆引きが出来ますか?

maruru (2008-09-03 (水) 03:19:25)

正規分布で平均値、標準偏差、0.025、0.975、サンプル数が既知の時、簡単にquantleを推定する方法が無いかなあと思いまして、初心者ゆえ安直なことを考えたのですが、教えていただけますでしょうか?

X11 module cannot be loaded?

lis-kyoto (2008-09-02 (火) 17:16:15)

SUSEのunixにRをyast2からインストールしまして、
確率分布を描くプログラムを実行させようとしましたところ、

Error in X11(): X11 module cannot be loaded
In addition: Warning messeage:
In X11(): unable to load shared library '/R/modules//R_X11.so':

  /usr/lib/R/modules//RR_X11.so: undefined symbol: cairo_image_surface_get_data


というエラーでできませんでした。(WindowsでRをインストールして実行したときは問題なく実行できてました。)
もともと、SUSEにインストールの時にも、cairoがないとか言われたのですが、
X11も、cairoもunixにはちゃんと入っていたので無視してインストールしてしまっていました。
なにかpathが通っていないのか、Rの問題なのか、調べてみたのですが、初心者でまったくわからないので、教えていただけますでしょうか。

Rパッケージインストーラの一覧の二重表示

伊太利屋次郎 (2008-09-01 (月) 12:44:11)

OSX 10.5.4でR 2.7.2を使用しています。実害はない(?)と思いますが,Rパーケージインストーラーのソース,バイナリーともに一覧を表示させると,パッケージが二重に表示されます。導入済みパッケージ(バイナリー,ソースともに)のバージョンは必ずしも,同じポジション(すべての導入済みパーケージが二重表示の上段だけにまたは下段だけに)に表示されるとは限りません。
どうなっているのでしょうか?

2次元の散布図で、ラベルが他のラベルやマークと重ならないように表示するには?

Koichi (2008-09-01 (月) 01:44:08)

お世話になります。2次元の散布図を作成しようとして、表題の件で行き詰っ
ています。

hoge <- matrix(
    c(
         1,  1,    "label1",
         1,  0.99, "label2",
         1, -1,    "label3(this is long)",
        -1,  1,    "label4(long again)"
    ), ncol=3, nrow=4, byrow=TRUE
)
plot(hoge)
text(hoge, hoge[,3], pos=1)


このようにラベルをそのままプロットすると、ラベル同士が重なったり、ラベ
ルの一部がプロットエリアの外に出てしまったり(表示されなかったり)しま
す。

目標は、上のhogeのようなデータを元に、以下のようなプロットを自動的に
生成することです。

fuga <- matrix(
    c(
         0.85,  1,
         0.95,  0.9,
         0.75, -0.9,
        -0.7,   1
     ), ncol=2, nrow=4, byrow=TRUE
)
plot(hoge)
text(fuga, hoge[,3])


このように自動的にラベル位置を調節してくれるような関数はありますでしょ
うか? identify関数が、これに近いこと(なるべく空いたスペースにラベル
表示)をやってくれるようなのですが、点を1つずつクリックしていくという
のは少し厳しいものがあります。お知恵をかしていただけましたら幸いです。

csvデータを読み込み時系列の棒グラフを作成したい

マーサ (2008-08-31 (日) 14:19:21)

始めまして!マーサと申します。
Rは2日目の初心者です、Rの解説本を読みながら手探りで勉強を始めましたがもうギブアップ状態です。
下記にcsvデータと試したコマンドを記述してみます。
このcsvデータ(データ数は710個)から時系列の棒グラフを作成する方法を教えてください。
日付 天山高
2001/10/2   2
2001/10/3  61
2001/10/4   4
2001/10/5
2001/10/6   3
2001/10/7   2
2001/10/8
2001/10/9   2

入力したコマンド
x <- read.csv("C:/R-sample/IJT.csv"))

barplot(x)  # 以下にエラー barplot.default(x

             #   'height' はベクトルか行列でなければなりません

以上です、またこのデータは項目が1個ですが、元データは日付に対して12の項目があります、1画面に4行、3列のグラフを表示させる方法も教えてください。
日付 天山高 天山低 天山微 天山その他 眼鏡岩高 眼鏡岩低 眼鏡岩微 眼鏡岩その他 摺鉢山高 摺鉢山低 摺鉢山微 摺鉢山その他
2001/10/2  2 6  2 11  6
2001/10/3 6 1 7 1 145 8 1 16 1
2001/10/4  42 2 2 2 3
2001/10/5  3 3 3 3 1
2001/10/6 3 4 3 4 1
2001/10/7 2 1 2 1 1 1
2001/10/8 1 1
2001/10/9 2 1 2 3 2 2

stepwise法におけるupper,lowerの設定

basel (2008-08-28 (木) 15:50:56)

ans<-step(glm(y~x,data=df)
とステップワイズ法を実行するとき、上・下限値の設定の仕方を、どなたかご教授願います。
sasでいうところのslentry,slstayをどのようにコメントすればよいのでしょうか

日本語を含むEPSファイルをGhostscript7.07で表示できない

Koichi (2008-08-22 (金) 01:09:40)

Windows XPでR 2.6.2を使用しております。以下のようにしてRから
出力したEPSファイルが、Ghostscript7.07で表示できず(TeX文書
に貼り付けることができず)困っております。

plot(0,main="ほげ")
dev.copy2eps(file="c:\\hoge.eps", family="Japan1Ryumin")

Ghostscript 8.63では表示できるのですが、できればまだ8.xxには
移行したくありません。7.07の設定が悪いのかと思って、試行錯誤
しているのですが、なかなか上手く行きません。現在のCIDFnmapの
中身は以下のようになっています。

/Ryumin-Light      /MS-Mincho        ;
/GothicBBB-Medium  /MS-Gothic        ;
/HeiseiMin-W3      /Ryumin-Light     ;
/HeiseiKakuGo-W5   /GothicBBB-Medium ;
/MS-Mincho         (msmincho.ttc) 1  ;
/MS-Gothic         (msgothic.ttc) 1  ;


GS7.07の設定のヒント、あるいは、「うちではGS7.07でも
ちゃんと見えているよ」といった情報等、教えていただけ
ましたら幸いです。

なお、GS7.07のエラーは以下のようなものがでています。

Error: /undefinedresource in --findresource--
Operand stack:
   Ryumin-Light-Bold   basefont-H   .basefont-H   Identity-H
  --nostringval--   CMap   Identity-H   CMap   Identity-H
Execution stack:(後略)

ロジスティック回帰におけるステップワイズ法

basel (2008-08-20 (水) 17:46:59)

glmのリンク関数"logit"で変数選択する場合、ステップワイズ法を利用したいのですが、どのようにすればよいのでしょうか?
ans<-glm(y~x1+x2...xn,family=binomial(link="logit"),data=df)
この例でいうとどのようにすればよいのでしょうか?

ベクトルの要素を並べ替えたものをすべて書き出したい

初心者 (2008-08-19 (火) 11:04:26)

おそれいります。

あるベクトル
x <- c(rep(1,19),rep(0,6))
から、すべての要素を並べ替えたリストを作成したいのです。

どうすればよろしいでしょうか。
よろしくおねがいいたします。

標準入力を行う関数

one (2008-08-14 (木) 22:34:42)

お世話になります。
print()でYesかNoの入力をユーザーに促し、switch()で処理を分岐させたいと考えていますが、キーボードから入力する関数が見つかりません。
C言語ならscanf()で標準入力ができますが、Rでそれに相当するような関数はないでしょうか?ご教授よろしくお願いします。

環境はWindows R 2.7.1です。

経験分布のP値

sh (2008-08-14 (木) 03:17:04)

観測データ全体のうち、興味ある値以下のものの「比率」を求めるには、例えば、

set.seed(1)
x <- sort(rnorm(200))
ecdf.x <- ecdf(x)
ecdf.x(0.23)

としますが、より正確な「確率値(P-value)」を求めるにはどうすればよろしいでしょうか?
References: (1) 階段関数、経験分布関数 - RjpWiki, (2) 正規性の検定(経験分布関数の作図), (3) 経験分布関数 - ryamadaの遺伝学・遺伝統計学メモ

特定の係数値だけを取り出したい

Saito (2008-08-12 (火) 17:02:22)

似たような質問がないか探しましたが、見当たらなかったので質問させてください。回帰分析の結果で、特定の変数の係数値を取り出すときには手動でやる以外に方法はないのでしょうか?例えば以下のような場合です。

set.seed(1)
a=rnorm(10,0,1)
b=rnorm(10,2,3)
c=lm(b~a)
coef(c)#aの係数だけを取り出したいとする。
coef(c)[2]#手動でaの係数の番号を指定して抽出

この場合ですと[2]という指定を手動で行っています。しかしこの方法ですと係数が多くなってきたときや、独立変数を変えたときなどに指定の番号を間違う恐れがあります。$や@などを使って色々試したのですが上手い方法を見つけられませんでした。どなたか方法をご存知でしたらご教授していただけないでしょうか。なお、OSはWindowsXpでバージョンはR.2.7.0です。

ubuntuでのグラフィックデバイスの利用

myuhe (2008-08-04 (月) 19:32:30)

ubuntuでrjpwiki内の次のページ(http://www.okada.jp.org/RWiki/?R%20%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB#pbac840c)を参考にr-baseとr-base-devをインストールしました
インストール後、Rの起動はできたのですが、plot()などでグラフィックを描画しようとすると、次のようなエラーメッセージが出てグラフが出力されません。
 "以下にエラー plot.new() : 存在しないデバイスにプロットしようとしました"
linuxに関しては、最近使い始めたばかりで、もしかするとOSに依存した問題なのかもしれませんが、どうしても解決しないため、質問させていただきました。
 解決法について、ご存知の方いらしたら、ご教示ください。
 なお、環境は以下のとおりです。
os:ubuntu8.04 ※winXPとのデュアルブート
Rver2.7.1
(追記)sessioninfo()の出力結果を載せておりませんでしたので、載せておきます。

attached base packages:~
[1] stats     graphics  grDevices utils     datasets  methods   base~
  • すみません。自己解決しました。plot.new()で呼び出しておけば良かったのですね。これまでWinユーザだったため、勝手がわかっておりませんでした。 -- myuhe 2008-08-04 (月) 20:16:57
  • 私は似たような環境(os:ubuntu7.10 ※winXPSP2とのデュアルブート)で、問題なく行きますが…
    > sessionInfo()
    R version 2.6.1 (2007-11-26) 
    i486-pc-linux-gnu 
    locale:
    LC_CTYPE=ja_JP.UTF-8;
     LC_NUMERIC=C;
     LC_TIME=ja_JP.UTF-8;
     LC_COLLATE=ja_JP.UTF-8;
     LC_MONETARY=ja_JP.UTF-8;
     LC_MESSAGES=ja_JP.UTF-8;
     LC_PAPER=ja_JP.UTF-8;
     LC_NAME=C;LC_ADDRESS=C;
     LC_TELEPHONE=C;
     LC_MEASUREMENT=ja_JP.UTF-8;
     LC_IDENTIFICATION=C
    attached base packages:
    [1] stats     graphics  grDevices utils     datasets  methods   base     
    loaded via a namespace (and not attached):
    [1] rcompgen_0.1-17
    家のPCが8.04&R2.7.1だった(でもdual bootでない)と思いますので、確認してみます。 -- akira 2008-08-04 (月) 20:48:51
  • 私の環境では問題ないです。
    > sessionInfo()
    R version 2.7.1 (2008-06-23) 
    i486-pc-linux-gnu 
    locale:
    LC_CTYPE=ja_JP.UTF-8;
     LC_NUMERIC=C;
     LC_TIME=ja_JP.UTF-8;
     LC_COLLATE=ja_JP.UTF-8;
     LC_MONETARY=C;
     LC_MESSAGES=ja_JP.UTF-8;
     LC_PAPER=ja_JP.UTF-8;
     LC_NAME=C;
     LC_ADDRESS=C;
     LC_TELEPHONE=C;
     LC_MEASUREMENT=ja_JP.UTF-8;
     LC_IDENTIFICATION=C
    attached base packages:
    [1] stats     graphics  grDevices utils     datasets  methods   base     
    ubuntu8.10です。 -- akira 2008-08-05 (火) 00:35:59
  • 有用な情報ありがとうございます。う〜ん、なぜすんなりいかないでんしょうか・・・気になるので、再度試してみます。 -- myuhe 2008-08-05 (火) 09:41:40
  • 他のデバイス(pdfとか、bmpとか)もダメですか?もしかして、Rの再インストールで解決したりしませんか? -- akira 2008-08-06 (水) 00:00:24

WIN版Rで、RCMD BATCHのoutfileの文字コード変更

okinawa (2008-08-01 (金) 13:28:17)

いつもお世話になってます。okianwaです。
windowsXPSP2、R2.5.1でRCMD BATCH infile.r outfile.txtを実行した場合、SJISでoutfile.txtが吐き出されます。これを、UTF-8でoutfile.txtを吐き出そうと思い、--encoding="utf-8" の指定をしたのですが、SJISのままでした。
なにか良い方法はありませんでしょうか?よろしくお願いいたします。

グラフの背景色の設定について

99 (2008-08-01 (金) 06:45:49)

グラフ作成時にグラフの背景色を好きな色に塗りつぶすにはどうしたらいいのでしょうか?枠や値のプロットは好きな色に設定できるのですが、背景色も設定できるのでしょうか?

read.tableでの不具合

basel (2008-07-31 (木) 12:53:10)

csvファイルをread.tableで読み込んだあと、fixで内容を確認するとデータの全てが1列目にデータ読みこまれてしまいます。
どのようにしたら良いのでしょうか?

fileでのエラー

basel (2008-07-29 (火) 12:54:02)

a <- file("ファイル名", open="r" encoding="cp932")
を実行すると、
「以下にエラーfile("c/:ファイル名", open="r" encoding="cp932"):
    コネクションを開くことができません
追加情報:Warning message:
ファイル"c/:ファイル名"を開くことができません。理由は'Invalid argument"です in:file("c/:ファイル名", open="r" encoding="cp932")

というエラーが出てしまいます。

単純に
a <- read.table("c/:ファイル名")
ですと、
「以下にエラーfile(file, "r"):コネクションを開くことができません
追加情報:Warning message:
ファイル"c/:ファイル名"を開くことができません。理由は'Invalid argument"です in:file(file, "r" )
というエラーが出てします。

単純な質問ですが、よろしくご教授願いいたします。

一部の全角記号がクリップボード経由でメタファイルコピーすると化ける

せーだ (2008-07-24 (木) 13:59:09)

WinXP Pro で R-2.7.1 を使っており、
以前から C:/Program Files/R/R-2.x.x/etc の中で
Rconsole の Font セクション(19行目付近)を

font = TT MS Gothic


に、Rdevga の TT Arial の部分を全て TT MS Gothic に修正しています。

この状態で『〜』(から)や『−』(全角マイナス)など一部の全角記号を
含むグラフを作成し、クリップボードにメタファイルでコピーしたものを
パワーポイントに貼ると、その記号だけ『?』に化けます。
例えば以下のようなコードです。

plot(sin, main="ほげ〜−ふが")


このような現象は R-2.6.2 までは発生しませんでした。
なお、メタファイルを別ファイルとして保存したものはパワーポイントに
問題なく取り込めます。
解決策をご存知の方がいらっしゃれば、どうか御教示下さい。宜しくお願いします。

  • パワーポイントで、編集 - 形式を選択して貼り付け - 拡張メタファイル でどうですか? -- 2008-07-24 (木) 15:18:56
  • あ、できた…。2.7系に上げたら問題が発生したという部分は気になりますが、当面この方法で対処します。ありがとうございました。 -- せーだ 2008-07-24 (木) 15:27:22
  • Unicode化の過程で現在部分的な拡張を行っているので当分の間、不具合は多いと思います. 非常に地味な作業になるので,まとまった時間がとれれば良いのですがなかなかそうもいきません..., -- なかま 2008-07-24 (木) 16:17:42
  • 2.9.0では解決されているようです。CHANGES IN R VERSION 2.9.0のWindows-specific changes to Rによると次の記述があります。-- せーだ 2009-04-20 (月) 11:28:21
o iconv() is now done by a version of Yukihiro Nakadaira's
  win_iconv rather than by libiconv.  This version is based on
  Windows' codepages and is not quite as comprehensive as
  libiconv: it is however much smaller and easier to maintain.
  The implementation here is 100% compatible: you can drop in
  libiconv's iconv.dll as a replacement if you need it, from
  http://www.stats.ox.ac.uk/pub/Rtools/Riconv.dll.

pdf( ) で右寄せがずれます

吉原 (2008-07-24 (木) 02:17:25)

Windows XP で R version 2.7.0 を使っています。
図の中に text() を使って注釈を書き、右端でそろえようとしたのですが、若干ずれが生じます。
いろいろ試したところ、次のようなことがわかりました。

pdf() を使うと問題が生じる。
大文字の Y を使うと問題が生じる。(他にもあるかもしれません)

例えば You という単語が入ると症状が顕著です。

pdf('You.pdf', width=11, height=8.5)
plot(0,0,xlim=c(0,1),ylim=c(0,1),type='n')
abline(v=.5)
text(0.5,0.9, 'You', pos=2)
text(0.5,0.8, 'You You', pos=2)
text(0.5,0.7, 'You You You', pos=2)
text(0.5,0.6, 'You You You You', pos=2)
text(0.5,0.5, 'You You You You You', pos=2)
text(0.5,0.4, 'You You You You You You', pos=2)
text(0.5,0.3, 'You You You You You You You You', pos=2)
dev.off()


postscript() では同様の問題は見られませんでしたので、.ps ファイルを .pdf に変換するなどの解決法はありますが、根本的に何が問題なのかが気になります。
よろしくお願いします。

誤植でしょうか?

匿名 (2008-07-23 (水) 13:20:31)

五章P106の一行目に表示されているコマンド

jp.ar<-ar(djpMacro, method="ols")

これを打ち込んだところ、以下のエラーが発生しました。

以下にエラー if ((dimension < 1) | (dimension > n)) stop("wrong embedding dimension") : 
  引数の長さが0です 
追加情報:  Warning messages:

1: In log(det(varEm - order.min + 1)) : 計算結果が NaN になりました
2: In ar.ols(x, aic = aic, order.max = order.max, na.action = na.action, :

  モデルの次数:  18 特異値が射影行列の計算中に生じました。  結果はモデル次数までしか適正ではありません: 17

誤植でしょうか?

http://d.hatena.ne.jp/haruosuz/

ここでは、誤植と紹介されているのですが…

オブジェクトの名前を得る関数

karat (2008-07-18 (金) 01:03:54)

関数に因数としてオブジェクト(例えばデータフレーム)を渡し、
そのオブジェクトの名前を得たいとき、どのような関数を使えばいいのでしょうか?
例えばfoobarがデータフレームだとして、nantarakansu(foobar)と渡し、
nantarakansuの中で"foobar"が欲しいのですが。超初心者質問で恐縮です。

無題

山田 (2008-07-16 (水) 16:55:08)

相互相関関数のそれぞれのラグにおけるACFの値を知るにはどうすればよいですか?

リスト要素を横方向へ出力する方法

Neo (2008-07-12 (土) 01:41:10)

こんにちは。
 A B
 1 2
 4 5
というa.txtというファイルと

A	B	C
qw	2	3
we	5	6
se	8	9

というb.txtというファイルがあるとします。

c <- as.list(NULL)
c[[1]] <- a
c[[2]] <- b

としてリストcを

 A	B     A	        B	C
 1	2     qw	2	3
 4	5     we	5	6
             se	8	9

このように横方向にファイルに保存したいのですが、どのようにすればよいでしょうか?write()やlapply()をうまく使えばできそうだなとは思うのですが、なかなか良い方法が思いつきません。
どうかよろしくお願いします。

Mac版R.app GUIでのキーボードショートカット

ara (2008-07-08 (火) 15:46:53)

Mac版RをMac OS X 10.4.11(PowerBook G4)で使用しています。
R.app GUIで、これまでコマンドラインでの行頭・行末への移動はコマンド(アップル)キー+左右カーソルで行っていましたが、R2.7.0以降(2.7.1も)では一旦Quartzデバイスを開くとこのコンビネーションが効かなくなってしまいます。言語設定を英語に切り替えても同様の症状が出てしまいます。ctrlキー+左右カーソルやctrl+A or Eでもジャンプできるのですが、慣れてしまっているもので・・

どなたか対処方法をご存じないでしょうか?

行明と列名の変更・削除方法について

kokko (2008-07-06 (日) 22:15:54)

行名と列名の変更・削除方法について教えてください。
以下のようなデータフレームが変数aに格納されているとします。

   A  B  C
a  1  2  3
b  4  5  6
c  7  8  9


ここでa,b,cは行名、A,B,Cは列名です。
これらの行・列名を変更するにはどうすればよいのでしょうか?

たとえば

   D  E  F
d  1  2  3
e  4  5  6
f  7  8  9


のようにしたいです。また、特定の行・列名だけを削除して

   A  B   
a  1  2  3
   4  5  6
c  7  8  9


のようなデータフレームを作成することはできるでしょうか?
よろしくお願いします。

使用環境 Mac OS X 10.5.4、R 2.7.0

nls.control()について質問

森林 (2008-07-04 (金) 18:40:26)

非線形最小自乗当てはめの制御 nls.control()について質問です。
nls() 関数による非線形最小自乗法アルゴリズムの幾つかの特性をユーザが設定できるようですが、うまくいきません。
次のようにRコンソールで打ち込むと、

nls.control(maxiter=500)
$maxiter
[1] 500
$tol
[1] 1e-05
・・・・
と表示されるのに、nls( 式、data, star=・・・)を実行したとき、50回でとまります。
すなわち、maxiter=50のままです。いろいろ試したのですが、具体的な変更方法がわかりません。
どなたか、ご教示のほどお願いします。

文字列を数値に変換

masaki (2008-07-03 (木) 17:38:59)

WindowsXPでR2.6.2を使用している者です。
JavaのpsrseIntメソッドのように、文字列を数値に変換する方法はありませんでしょうか?

具体的には、ある文字列(例:abc105)から正規表現を用いて、

x <- gsub(":lower:+(:digit:+)", "\\1", "abc105")

数値だけの文字列に置き換えます。このxを表示すると、

[1] "105"

となります。これを、ループで

for(i in 1:x){ 処理 }

のように用いたいのですが、文字列のため用いることができません。

正規表現の段階で数値型にする、xを文字列型から数値型に変換する、あるいは他の方法でもかまいませんのでお願いいたします。

複数のベクトルを1つにベクトルに合体させるには

田中 (2008-07-03 (木) 13:49:33)

n1<-c(1,2,3) n2<-c(4,5,6) n3<-c(7,8,9) →n<-c(1,2,3,4,5,6,7,8,9)のように複数のベクトルを1つのベクトルに合体させる方法を教えてください。

日本語(2バイト文字)が含まれた PDF ファイルの生成(Windows 版 R 2.7.1)

初心者 (2008-07-03 (木) 09:56:49)

Windows 版 R 2.7.1 を使用しているものです。以下の諸設定をして、日本語(2バイト文字)
が含まれた PDF ファイルを生成しようとしているのですが、上手く表示されません。

<C:\Program Files\R\R-2.7.1\etc>

Rdevga:12〜15行目を以下のように修正しました
TT MS Gothic : plain
TT MS Gothic : bold
TT MS Gothic : italic
TT MS Gothic : bold&italic

Rconsole:19行目を以下のように修正しました
font = TT MS Gothic

Rprofile.site:以下を追記しました
setHook(packageEvent("grDevices", "onLoad"),
        function(...) grDevices::ps.options(family="Japan1"))


もしよろしければご教授いただけませんでしょうか。


barplotのy軸と棒の下限の変更

sh (2008-07-03 (木) 09:10:15)

barplot(2:10, ylim=c(1,10))

棒グラフのy軸の下限を1にしたのですが、棒は下限が1にならずに図の外にはみ出してしまいます。アドバイスをよろしくお願いします。

ベクトル要素の総当たりの結合

田中 (2008-06-27 (金) 17:17:20)

x<-c(1,2,3)とy<-c(6,7,8)の要素の数字を総当たりで結合してz<-(16,17,18,26,27,28,36,37,38)のベクトルを作成したいのですが?

sspirの使い方について

ichigo (2008-06-25 (水) 12:26:50)

Rのパッケージ「sspir」を使って状態空間モデルを扱いたいのですが
(株価などで)
どうも使い方がいまひとつわかりません.
このサイト内を検索したところ恐ろしいらしいページに一件記事がありましたが
特に話題が広がるわけでもなく、終わっていました.
詳しく書いてあるサイトなどご存知でしたら、教えていただけませんでしょうか.
よろしくお願いいたします.

パッケージe1071内の関数svmの使用について

kei (2008-06-24 (火) 05:52:51)

パッケージe1071内の関数svmについて教えて下さい。
関数svmを使って分類問題の学習をさせるために
以下のようなプログラムを組んだのですが

library(e1071)
dat <- iris
dat.col <- ncol(dat)
dat[,5] <- as.integer(dat[,5])
dat.tr <- dat[c(1:40,51:90,101:140),]
dat.tr.row <- nrow(dat.tr) 

dat.tr.u <- dat.tr
for (j in 1:dat.tr.row){ 
	if (dat.tr.u[j,5] == 1){
		dat.tr.u[j,5] <- "A"
	} else {
		dat.tr.u[j,5] <- "B"
	}
}
x <- (dat.tr.u[,1:dat.col-1])
y <- dat.tr.u[,5]
model <- svm(x,y)



実行すると svm.default(x, y) : Need numeric dependent variable for regression.
というエラーが出ます。x,yのmodeが問題ではと思い、色々な組み合わせを試したみたのですが同じエラーが出ます。解決方法を教えて下さい。
よろしくお願いします。

Tukeyの多重検定をしたいのですができません。

A (2008-06-20 (金) 17:08:13)

Tukeyの多重検定をしたいのですができません。
青木先生のサイト(http://aoki2.si.gunma-u.ac.jp/R/m_multi_comp.html)等を参考にして、

m.multi.comp(・・・

tukey(data, group)
などやってみましたが、 「エラー:関数 "m.multi.comp" を見つけることができませんでした 」「エラー:関数 "tukey" を見つけることができませんでした」というメッセージが出てしまいます。
どうしたらよいのでしょうか?
使用環境はWindowsXPでR version 2.7.0を使ってます。
よろしくお願いします。

median()のエラーについて

apple (2008-06-15 (日) 18:05:00)

よろしくお願いします。

  V1 V2 V3
1  1  2  3
2  4  5  6
3  7  8  9


このようなデータフレームを変数aに入れたとします。
1列目のmedianを計算しようと思い median(a[1])としたところ

以下にエラー median.default(a[1]) :  数値データが必要です


と言われました。
しかしmean(a[1])とすると1列目の平均値を計算できます。
これはどうしてでしょうか?mean()とmedian()には書式に違いがあるのでしょうか?

使用環境 Mac OS X 10.5.3、R 2.7.0

オームの法則

-0.889 (2008-06-12 (木) 00:39:03)

たとえば、xデータに電圧値(v)をプロット、yデータに電流値(i)をプロットしてグラフにしたとします。グラフにあるデータで第2軸をたどれば抵抗値(r)が分かると言った具合にしてみたいのですが、可能でしょうか。質問内容のように全くの初心者です。

データフレームへのアクセス(複数条件つき抽出)

寿司 (2008-06-11 (水) 09:39:40)

度々、恐れ入ります。
データフレームで、条件付の抽出を行いたいのですが、
複数の条件を設定した場合、うまく抽出できませんでした。
ひとつの条件であれば、問題なく機能するのですが、以下D3の記法は何がおかしいのでしょうか?
お手数をおかけしますが、よろしくお願いいたします。

id     <- c("A","B","C","D","E")
height <- c(158,177,177,177,166)
weight <- c( 51, 56, 55, 57, 55)
age    <- c( 23, 44, 21, 39, 42) 
D      <- data.frame(ID=id, H=height, W=weight, A=age)


D2 <- D[(D$ID=="A"), ]
D3 <- D[((D$ID=="A") || (D$ID=="B")), ]

通し番号を除いて、出力する方法

寿司 (2008-06-10 (火) 22:41:30)

たびたびの初歩的な質問で恐れ入ります。
以下のようなデータフレームを作成しましたところ、自動的に通し番号が振られますが、出力する際にこの通し番号を除く方法はありませんでしょうか?
出力しますと、通し番号のために、列名がずれてしまいます。
(使用環境 windows vista, R2.6.0)

sex    <- c("F","F","M","M","M")
height <- c(158,162,177,173,166)
weight <- c(51,55,72,57,64)
( x    <- data.frame(SEX=sex, HEIGHT=height, WEIGHT=weight) )


write.table(x, "x.csv", quote=F, col.names=T, append=F, sep="," )

被験者内計画の分散分析

アべセ (2008-06-10 (火) 16:11:13)

被験者間計画の分散分析のやり方は分かりやすいのですが、被験者内計画の分散分析のやり方が全くわかりません。よろしければ、その方法を教えてください。

OSXでR Commanderがインストールできない

ton (2008-06-09 (月) 23:29:02)

Mac OS X 10.4.11でパッケージとデータ>パッケージインストーラーから
R Commander(Rcmdr)をインストールし、Rコンソールで「>library(sem)」と
入力してパッケージを読み込もうと思ったのですが、以下のようなエラーがでます。
全くの素人で、解決の手段がわかりません。よろしくお願いします。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

要求されたパッケージ tcltk をロード中です 

Tcl/Tkインターフェースのロード Error in dyn.load(file, DLLpath = DLLpath, ...) :

  共有ライブラリ '/Library/Frameworks/R.framework/Versions/2.7/Resources/library/tcltk/libs/i386/tcltk.so' を読み込めません 
 dlopen(/Library/Frameworks/R.framework/Versions/2.7/Resources/library/tcltk/libs/i386/tcltk.so, 10): Library not loaded: /usr/X11R6/lib/libX11.6.dylib
 Referenced from: /Library/Frameworks/R.framework/Versions/2.7/Resources/library/tcltk/libs/i386/tcltk.so
 Reason: image not found 

Error : .onLoad は 'tcltk' のための 'loadNamespace' で失敗しました

エラー:  パッケージ 'tcltk' をロードできませんでした 

多変量自己回帰分析VAR

tarai (2008-06-07 (土) 11:39:59)

Rで多変量自己回帰分析する際のパワー寄与率を計算するにはどうしたらよいでしょうか?どなたかお教え願えれば幸いです。

n*3行列データで等高図

初心者 (2008-06-06 (金) 14:01:42)

簡単な質問申し訳ないのですが、
n*3の行列データで等高線を書きたいと思っています。
データは
x1 y1 z1
x1 y2 z2
x1 y3 z3
x2 y1 z4
x2 y2 z5
x3 y3 z6
........
という形式で並んでいるのですが、
これを
d<-read.table("data")で読み込んで、
contour(data$V1,data$V2,data$V3)でプロットしようとしても
'x'と'y'の値は昇順であることが期待されます
と出てプロットできません。persp()を用いても同様に表示されます。
ご回答お願いします。

使用環境は
Ver.2.7.0
win vistaです

ソートについて

寿司 (2008-06-05 (木) 00:18:35)

昇順、降順を織り交ぜたソートを行いたいのですが、思ったように機能してくれません。以下の例では、例えば、Hについては昇順、Wについては降順、Aについては昇順としたいのですが、コマンドはどのように書けばよいでしょうか?すべて昇順であれば、orderで順に並べればよいのですが…。初歩的な質問で申し訳ありませんが、よろしくお願いいたします。


> id     <- c("A","B","C","D","E")
> height <- c(158,177,177,177,177)
> weight <- c( 51, 56, 56, 57, 55)
> age    <- c( 23, 43, 44, 39, 42) 
> D      <- data.frame(ID=id, H=height, W=weight, A=age)
> D 
 ID   H  W  A
1  A 158 51 23
2  B 177 56 43
3  C 177 56 44
4  D 177 57 39
5  E 177 55 42

UNDO機能ってありますか?

LINUX初心者 (2008-06-03 (火) 20:33:38)

コマンドライン(FEDORA7)で作業していて操作を間違えてしまった時に
一個前の状態に戻れるような機能はないのでしょうか?
RSiteSearchやサイト内検索は試みましたが見つけられませんでした。
現在金先生の本を教科書に勉強始めたとこなので
「そんなことも分からんのか!!」と言われそうですが宜しくお願いします。
R は version 2.7.0 (2008-04-22)

データハンドリングについて(ソート、分位、行ずらし、重複列削除)

寿司 (2008-06-03 (火) 12:17:18)

以前SASを使っておりまして、Rでも同じようにデータハンドリングしようとすると、意外に手間取っております。一通り、探してみたのですが、適当なものは見つからず、以下の点につきまして、関数やパッケージをご存知でしたら、紹介頂けませんでしょうか?

・ソートについて
複数の項目のソートを行いたいのですが、昇順、降順が混ざっており、単純には並び替えできませんでした。
現在の私のプログラムでは、ファイルを適宜分割した後、何度かソートをかけて、またくっつけるという、非常に面倒で遅い処理をしております。

・分位について
SASであれば、rankを使って簡単に分位に分けられたのですが、Rには相当する関数がありますでしょうか?

・行ずらし
ある項目について、前レコードとの比較を行いたいのですが、現在の私のプログラム:(列を追加&前レコード値を代入)の反復、では遅すぎてデータ処理が滞っています。

・重複列削除
まったく同じ行が現れたとき、その行を削除したいのですが、項目を逐一照会して、判断するほか無いのでしょうか?

列名の強制変換

sh (2008-05-30 (金) 03:51:32)

以下のようなタブ区切りのデータファイル("file.txt")を関数read.delim()で読みこむときに、列名の一部(" ","-","|",":")が"."に強制返還されないようにする方法を教えてください。

a b	a-b	a|b	a:b	a_b
a b	a-b	a|b	a:b	a_b
a b	a-b	a|b	a:b	a_b
> sessionInfo()
R version 2.6.1 (2007-11-26) 
i386-apple-darwin8.10.1
> ( x <- read.delim("file.txt") )
  a.b a.b.1 a.b.2 a.b.3 a_b
1 a b   a-b   a|b   a:b a_b
2 a b   a-b   a|b   a:b a_b
Warning message:
In read.table(file = file, header = header, sep = sep, quote = quote,  :
   'file.txt' の readTableHeader で不完全な最終行が見つかりました 
> colnames(x)
[1] "a.b"   "a.b.1" "a.b.2" "a.b.3" "a_b"  

全オブジェクトの列数の連続取得

nrow? (2008-05-29 (木) 13:38:34)

いつも、拝見させていただいております。
計算する際に、オブジェクトがa〜zまでできます。
この全オブジェクトの列数が、書き込まれたデータフレームを作成したいのですが、うまくいきません。

例えば

a1 <- data.frame(ls(), nrow(get(ls())))

とすると一列目には全オブジェクトの名前が入るのですが
二列目には一番初めに来るオブジェクトの列数が入ってしまいます。

二列目には一列目のオブジェクトに対応した列数を入れるためにはどうしたらよいでしょうか。

ご教授願います。

読み込んだCSVファイルを、日付を条件に検索したい

寿司 (2008-05-28 (水) 09:27:13)

R 2.6.0 をWindows Vistaで使用しています。
日付データを含んだcsvファイルを読み込み、Rで今日の日付で検索しようと考えております。
Rでは、

today <- Sys.Date()

today
[1] "2008-05-28"
となりますので、csvファイルには文字列で"YYYY-MM-DD"となる列を作ったのですが、これでは型が対応していないのか、エラーとなってしまいました。
R側、csv側どちらでも良いので、検索が機能するような方法ありませんでしょうか?
プログラムは以下のとおりです。(csvの代わりにデータフレームに直接入力しています)

d <- c("2008-05-28","2008-05-29","2008-05-30")

a <- c(1,2,3)

( x <- data.frame(D=d, A=a) )

          D A

1 2008-05-28 1
2 2008-05-29 2
3 2008-05-30 3

(today <- Sys.Date())
[1] "2008-05-28"

x[x$s==today, ]
[1] D A

0 rows> (or 0-length row.names)

x[x$D==today, ]
[1] D A

0 rows> (or 0-length row.names)
Warning message:
In `[.data.frame`(x, x$D == today, ) :

  メソッド ("Ops.factor", "Ops.Date") は "==" に対しては矛盾しています

Y軸の目盛り間隔をグラフ間で同一に

ICA (2008-05-26 (月) 23:57:06)

複数のboxplotを縦に並べようとしています。グラフAは縦軸の最大値―最小値が0-20で、グラフBは0-100です。二つのグラフを描く際に、Aのグラフの縦軸の目盛り間隔がBのグラフの縦軸の目盛り間隔と一致するようにしたいのです。つまり、Aの0-20の長さは、Bの0-20の長さと同一にしたいです。
 縦軸の最大値の指定は、ylimで出来ることがわかりましたが、間隔をそろえるのは、x,y軸をそろえるというaspという記述しか見つけられませんでした。
 おそらく、boxplotに限らず、どのようなグラフでも同じやり方があると思うのですが、その方法を教えていただきたいと思います。

R2.7.0 on MacBookPro: legend()でエラー

松田紀之 (2008-05-21 (水) 19:36:41)

R2.7.0 on MacBookPro (OSX 10.5.2) でplot()し,legend()を実行するとエラーがでます.下記のプログラムは,R2.7.0 on PowerBookG4 (OSX 10.4.11)なら問題はありません.対処方法を教えて下さい.

plot(1:5,1:5)

legend("bottomright",legend=c("a","b"),lwd=1,col=1:2)

*** caught bus error ***

address 0x10, cause 'non-existent physical address'

Traceback:

1: strwidth(legend, units = "user", cex = cex)
2: legend("bottomright", legend = c("a", "b"), lwd = 1, col = 1:2)

連続でxtabsを行いたい。

ともぞう (2008-05-19 (月) 17:00:30)

  A	B	a	b	c
  2	2	2	2	1
  2	2	2	2	0
  1	2	2	1	1
  2	2	0	2	0
  0	2	2	1	2
  0	2	2	2	0
  0	2	0	2	1
  2	1	1	1	2
  2	0	2	2	0
  0	1	1	0	2

このようなデータから下のような集計を行う方法はありますでしょうか?

               a       a       a       b       b       b       c       c       c
               0       1       2       0       1       2       0       1       2
   A   0       1       1       2       1       1       2       1       1       2
       1       0       0       1       0       1       0       0       1       0
       2       1       1       3       0       1       4       3       1       1
   B   0       0       0       1       0       0       1       1       0       0
       1       0       2       0       1       1       0       0       0       2
       2       2       0       5       0       2       5       3       3       1

集計は、Aが2のとき、b=2が4つという感じで行っています。

ちなみに、個別でAとaに関するテーブルというのはxtabsでできるのですが、実際のデータでは、列数が非常に多いので、全部まとめた集計表は作れないものかということで質問させていただきました。
何か良い知恵がございましたらよろしくお願いします。

R 2.7.0 Windows版での2byte文字について。

goof (2008-05-17 (土) 22:21:10)

Windows XPを使用しております。

sessionInfo()
R version 2.7.0 (2008-04-22)
i386-pc-mingw32

locale:
LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932

attached base packages:
[1] stats graphics grDevices utils datasets methods base

です。

Rエディタで2byte文字を含むコードをR consoleに"カーソル行または選択中のRコードを実行"から送ると、R console上では文字化けが起こってしまい、正しく処理されません。R console上で直接入力する際は問題ないのですが・・・。全角の数字"#123"を試してみますと、

#ツPツQツR

となります。
options(encoding="UTF8")としてもoptions(encoding="SJIS")としても変化はありませんでした。Windows 2000、vistaでも試してみましたが、同じ問題が生じてました。R 2.6.2まではこの問題はありませんでした。

どうぞ原因と解決策のご教示をよろしくお願いいたします。

パッケージkohonenのxyfの使い方が分かりません

たにくん (2008-05-15 (木) 14:55:00)

解説にはSOM(自己組織化マップ)の教師つきバージョンと書いてあるので,使ってみたのですが,その使い方がはっきり分かりませんでした.

data(wines)
set.seed(7)

training <- sample(nrow(wines), 120)
Xtraining <- scale(wines[training,])
Xtest <- scale(wines[-training,],center = attr(Xtraining, "scaled:center"),scale = attr(Xtraining, "scaled:scale"))

xyf.wines <- xyf(Xtraining,classvec2classmat(wine.classes[training]),grid = somgrid(5, 5, "hexagonal"))

xyf.prediction <- predict(xyf.wines, newdata=Xtest)
table(wine.classes[-training], xyf.prediction$prediction)

というexampleがあるのですが,はっきりと理解できません.

もし,学習データとしてdata1という200行10列の行列を用い,テストデータとしてdata2という20行10列の行列を用いたい時,xyfではどのようなコマンドを入力すればsomのユニットの特徴を表示しない散布図のようなのを表示することができるのでしょうか?

ご回答よろしくお願いします.

パッケージkohonenのwinesというデータが見つからない.

小心者 (2008-05-15 (木) 14:25:03)

研究でRを使うことになり,特に統計データによる診断関係を行っています.

library(kohonen)を開いて,xyfを使うことにしました.
その例で本来winesというデータがパッケージには含まれているはずですが,それが入っていませんでした.
wines.classesもありませんでしたので,これらはどこかでソースをダウンロードしないといけないのですか?
その場合,どこでダウンロードできるのか教えてください.
file:///E:/Program%20Files/R/R-2.7.0beta/library/kohonen/html/wines.html
にはソースが以下のHPにあると書いてますが,見つかりませんでした.
http://kdd.ics.uci.edu/

どうかよろしくお願いします.

Rで組み合わせの結果を表示したい

edora (2008-05-13 (火) 15:01:51)


Rと統計を学び始めています。
Rで組み合わせを行い、すべての組み合わせを表示させたい場合はどんなコマンドを
使えば良いのかわからずにいます。

x <- (1,2,3,4,5,6,7,8,9,10)
このxの中から2つの数字の組み合わせ45通りを表示させたいと思っています。
(1,2)(1,3)…(9,10)

またこれらの平均や分散を求めたり、度数分布表示が出来ればと思っています。

コマンドを調べる方法がよくわかっていないのですが、"Rと組み合わせ"と検索して
choose(10,2)のように組み合わせの10C2の計算方法がわかった段階で進めないでいます。
よろしくお願いします。

クロス集計時に起きるエラーについて

初心者 (2008-05-12 (月) 17:18:45)

クロス集計を作成する際に出るエラーで困っています。
非常に難しい点が、エラーが出る条件に再現性が見いだせないところなのですが、アドバイスいただけると嬉しいです。

A B C D E F G H
0 1 0 0 0 0 0 0
0 1 0 1 1 0 0 0
0 1 0 0 0 0 0 0
0 1 0 0 1 0 0 0
1 1 1 0 1 0 0 0
1 1 1 0 1 0 1 0
1 1 1 0 1 0 0 0
1 1 1 0 0 1 0 0
1 1 1 0 0 0 1 1

 上記のようなデータをtmpとして、以下のスクリプトを実行しています。

for(i in c(1:3)){
	 tab_del <- read.table("tab_del.csv", sep = ",")#tab.csvをtab_del(白紙のcsv)に初期化
	write.table(tab_del, "tab.csv", sep = ",", row.name = F, col.name = F)
	for(j in c(1:5)){
	 	tab <-t(xtabs(tmp[,3+j]~tmp[,i], tmp))
		 write.table(tab, "tab.csv", sep = ",", row.name = F, col.name = F, append = T)
		 }
	 tab <- read.table("tab.csv", sep = ",")
	 t_tab <- t(tab)
	 write.table(t_tab, "t_tab.csv", sep = ",", row.name = F, col.name = T, append = T)
}


 上のデータではエラーが起きないのですが、実際のデータを扱った場合、「重複したrow.namesは許されません」というエラーが出ることがあります。

 エラーの原因は、ループのiで起きていることまでは突き止めました。
 具体的には、「特定のi列」(後述)を除くとエラーは発生せずにファイルが作成されるからです。
 ただ、問題なのは、同じデータで同じスクリプトを実行しても、「特定のi列」が毎回異なります。
 たとえば、一回目にi=1列目を除くことでエラーが出なくなったので、2回目にi=1行目を除いて同じスクリプトを実行すると、今度は異なるi列が原因でエラーが発生します。

 スクリプトの問題なのか、データの問題なのかもはっきりせず困り果てています。どうぞよろしくお願いします。

R2.7.0 Windows版のPDFに日本語が表示されない

X Jr. (2008-05-07 (水) 22:43:10)

Windows XP です。

> sessionInfo()
R version 2.7.0 (2008-04-22) 
i386-pc-mingw32 

locale:
LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932

attached base packages:
[1] stats     graphics  grDevices datasets  utils     methods   base     

で、

> plot(1, main = "テスト")

として、[ファイル]→[別名で保存] から PDF で保存すると、main の部分に何も表示されません。
PDF に保存した直後に再度、同じ命令を入れると、

> plot(1, main = "テスト")
Warning messages:
1:  'PostScriptStringWidth' 中に不正な文字列  
2:  'PDF_Text' 中に不正な文字列  

というメッセージが出ます。さらにもう一度同じ命令を入れるとメッセージは出ません。
.Rprofile には

setHook(packageEvent("grDevices", "onLoad"),
        function(...) grDevices::ps.options(family="Japan1GothicBBB"))

の記述をしています。これを外して同じようにすると、PDF の main の部分に点が9個並びます。

> plot(1, main = "テスト")
> plot(1, main = "テスト")
 18 件の警告がありました (警告を見るには warnings() を使って下さい) 
> warnings()
 警告メッセージ: 
1:  'mbcsToSbcs' 中の '繝・
2:  'mbcsToSbcs' 中の '繝・
     略
17:  'mbcsToSbcs' 中の '繝・?
18:  'mbcsToSbcs' 中の '繝・?

そして、上記のようなメッセージが出ます。
よろしくお願いします。

R2.7.0,Macintosh版でのグラフィック表示における日本語

ご勘弁を (2008-05-06 (火) 19:23:23)

以下のような状況,コマンドで,表示されるグラフィックにおいて,日本語が文字化けします。なお,ファイルに出力するとちゃんと日本語は表示されます(環境はR2.6.2 と同じで,R2.6.2で同じ事をやると,グラフィック表示も,ファイルでの日本語もちゃんと表示されていました)。

> sessionInfo()
R version 2.7.0 (2008-04-22) 
powerpc-apple-darwin8.10.1  

locale:
ja_JP.UTF-8/ja_JP.UTF-8/C/C/ja_JP.UTF-8/ja_JP.UTF-8 

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     
> hist(rnorm(1000), main="日本語")

縦に並んだデータから平均を出す方法

シチノスケ (2008-05-01 (木) 19:15:48)

こんにちは。
次のようなデーセットがあるとします。
変数xについて,personが同じ値のもの同士で平均をとりたいのですが,どうすればいいでしょう?(この場合,4つの平均値をベクトルにして出力することになります。)

           x person
1  13.078577      1
2  13.365019      1
3   6.365492      2
4   6.287424      2
5  13.974501      3
6  12.838648      3
7  11.565927      4
8  10.240504      4


どうぞよろしくお願いします。

テーブルの要素から上位のものを抽出

yuta (2008-05-01 (木) 14:29:36)

次のようなテーブル(またはデータフレーム)があるとします

   A B C D
1  1 4 0 2
2  0 1 5 3
3  3 2 1 1
4  4 2 4 1
5  5 9 3 0

このテーブルの、例えば各列の上位2つの要素だけを抽出し集計し直したテーブル(すなわち下のようなもの)を新たに定義するべく、列ベクトルのソートとmerge()を組み合わせてみたのですが、うまくいきません。うまい方法をご存じの方、ご教示いただければと思います。

こんな結果が得たい>

   A B C D
1  0 4 0 2
2  0 0 5 3
4  4 0 4 0
5  5 9 0 0

NAを含むデータフレームの列別の合計や平均値を求める方法は?

yh (2008-04-29 (火) 00:43:59)

Rの初心者です。xのdata.frameにNAが含まれていると、列の合計値や平均値が求められませんが、何か簡単に求める方法はないのでしょうか。
例えば、xの内容が次の場合、

 A  B  C
1 1  2 NA
2 2  3  4
3 3 NA  5
4 4  5  6
5 5  6  7

次のように書けば、

for(i in 1:3){y<-append(y,sum(x[,i][!is.na(x[,i])]))}
> y
[1] 15 16 22

で求められることがわかりましたが、これでは記述が煩雑で長くなり、Rの簡便な表記方法で演算できるすばらしい特長を損なっているように思います。何かよい方法があると確信していますが、調べても記載が見つけられないのでお尋ねします。どうぞよろしくお願いします。

for文での連続した処理

初心者 (2008-04-27 (日) 19:22:10)

初歩的な勘違いをしていると思いますが、ご指摘くだされば幸いです。

> a1<-c(1,2)
> a2<-c(3,4)

とし、

> for(i in 1:2){x<-paste("a",i,sep="");mean(x)}

とすると、

NA 
NA 
Warning messages:
1: 引数は数値でも論理値でもありません。NA 値を返します in: mean.default(x) 
2: 引数は数値でも論理値でもありません。NA 値を返します in: mean.default(x) 

と返ってきますが、a1,a2のそれぞれのmeanの値を返すには、
どういうプログラム文が必要でしょうか?

R2.7.0におけるlocator()の仕様

すろん (2008-04-25 (金) 18:15:18)

iMacG5, MacOSX10.5.2にR2.7.0を入れました。

R2.6.2を利用していたときは,

> locator()

と入力してenterキーを押した後,適当にQuartzデバイス画面をクリックして再びenterキーを押せば,クリックしただけx, y座標を出力してくれたと思います。先ほどR2.7.0にアップデートして同じような操作をしたら,なかなかlocator()が終わってくれませんでした。Rのヘルプには,Escキーで終了させろと言っているようなので,それもやってみましたが終わりません。ついにはRが固まってしまうという事態になったので,やむなくRを強制終了しました。

この動作を2,3回繰り返した後,再びRを起動して,

> locator(1)
> locator(5)

などと命令しました。これは問題なく動作しました。しかしlocator(5)を途中で終わらせようとするとうまくいきません(EnterキーやEscキーを押してみたり,STOPボタンを押してみたり)。

括弧の中の数値が大きい場合など,途中でやめたい時もあるので悩んでおります。このような状況は,他の方にも現れているのでしょうか?2.7.0の仕様なので仕方がないことなのかどうか教えていただけると助かります。

データーフレームからの特定条件の抽出

subset (2008-04-23 (水) 22:56:19)

いつも拝見しております。
どうしてもうまくいかないので、ご教授を願います。
下記のようなデータフレーム DFの抜粋があるとします。
Xには何らかの数字が入っているとします。

  
	  A	  B       C     D
   a	0.265  -0.422  -0.735   X
   b	0.000 	0.273  -0.102   X
   c	0.647  -0.233  -0.593   X
   d	0.551  -1.171  -2.047   X
   e  -0.078 	0.177 	0.213   X
   f   0.023  -0.330  -0.380   X
   g  -0.129 	0.086 	0.277   X
   h	0.174  -0.571  -0.095   X
   i   X    X      X     X
   j   X    X      X     X 

  
これから、
� (B-A) >= 0.2 または (C-A) >= 0.2
� (B-A) >= 0.2 ではあるが (C-A) >= 0.2を除くデータ
� (C-A) >= 0.2 ではあるが (B-A) >= 0.2を除くデータ
� �で作ったデータフレームを利用し (D - B) >= 0.2ではあるが (D - C) >= 0.2を除くデータ  
をそれぞれ抽出し新たなデータフレームを4つ作りたいと思います。

自分なりに調べsubsetで抽出してみましたが下記のようにしても
うまくいきませんでいた。

 A1 <- subset (DF, (B - A) >= 0.2 | (C - A) >= 0.2 )
 A2 <- subset (DF, (B - A) >= 0.2 &! (C - A) >= 0.2)
 A3 <- subset (DF, (C - A) >= 0.2 &! (B - A) >= 0.2)
 B1 <- subset (A1, (D - B) >= 0.2 &! (D - C) >= 0.2)

アドバイスをいただければと思います。
よろしくお願いいたします。

に変更し計算させたところ、データの数が B1 = B2 + B3 になりませんでした。 内容を確認したところ、どうもB2, B3の結果はDFのデータから抽出したものになっているようです。

いろいろ調べたのですが、皆様がおっしゃるように方法自体は間違いでは ないと思うのですが。不思議でしょうがありません。-- subset 2008-04-25 (金) 09:29:34

各列の項目ごとの集計表を一つの表にまとめるには?

初心者 (2008-04-22 (火) 18:49:31)
 A B C D

 1 a 5 1
 2 c 3 0
 1 a 3 1
 1 b 1 0 
 2 a 2 0
 1 a 4 0

といった行列から

1 2       ←Aについての集計表
4 2
a b c     ←Bについての集計表
4 1 1
1 2 3 4 5 ←Cについての集計表
1 1 2 1 1
0 1       ←Dについての集計表
4 2


といった感じで、各列の項目ごとの集計表を一つにまとめるにはどうすればよいのでしょうか?

試しに以下のようなスクリプトを書いてもみましたが、うまくいきませんでした。

xlab <- c(names(x))	#列タイトルのベクトル化
n <- ncol(x)	#繰り返し回数(列数)の取得
for (i in 2:n){
	cbind(table(x$xlab[i-1]),table(x$xlab[i]) )
}


アドバイスいただけないでしょうか?
 

2008-04-23 (水) 11:19:13

gzファイルのパッケージ

MA (2008-04-19 (土) 20:00:30)

WindowsOSとWindowsのRで、.gzで圧縮されたパッケージを使う場合、一回展開してからzipにすると、
以下にエラーunpackPkg(pkgs[i], pkgnames[i], lib, installWithVers) :

       malformed bundle DESCRIPTION file, no Contains field

となってしまいます。
他に方法があるのでしょうか?
ちなみに、パッケージのリストには表示されません。

Rの独習方法

デッサウ (2008-04-19 (土) 19:30:38)

これから本気でRを独習しようと考えております。
理系出身であり、いまはエクセルで重回帰分析を
行っておりますが統計についての知識は乏しく、
解析自身にも自信が持てません。
正しく統計解析を行えるようになりたく
アドヴァイスありましたらよろしくお願いします。

AIX6へのインストール

シバタ (2008-04-18 (金) 13:12:54)

AIX6(64bit)にRの最新版をインストールしたいのですが、対応しているのでしょうか。インストールして使用している方いらっしゃいますか。もし情報がありましたら、教えて下さい。宜しく御願い致します。

画像ファイルの上書き防止

初心者 (2008-04-16 (水) 12:13:24)

画像ファイルの上書きを防止するにはどうすればよいのでしょうか?

write()などだと、append = Tとすることで上書きを防ぐことができると思いますが、pdfやpngなどの画像ファイルでappend = Tを入れても、「使われていない引数」と言われてしまいます。

よろしくおねがいします。

  png(filename ="Rplot%03d.png")

 plot(1:10)
 plot(1:15)

  plot(1:20)   dev.off()  こうすると、連番でRplot001-003までが作成されます。

 次に、以下の処理を行うと…

 png(filename ="Rplot%03d.png")
 plot(1:30)
 plot(1:200)
 plot(1:300)
 dev.off()

 上で作成した連番のRplot001-003に上書きされる形でRplot001-003が作成されます。

 できれば、ここを「Rplot004-006という感じで作成したい」と思っています。  これが無理であれば、テキストファイルなどの作成時、append=Tにしたとき、「warning が出て、上書きされない」ということができればと思っています。

 いかがでしょうか?

複数のグラフを並べて一つのファイルに

iris (2008-04-14 (月) 12:13:08)

いつもお世話になっています。

複数のグラフを一括で見るためにグラフを並べるにはどうすればよいのでしょうか?

調べてpar(mfrow)を試してみたのですが、できるものとできないものがあり困っています。

できるもの
par(mfrow = c(3,2))
plot(1:5)
plot(1:10)
plot(1:15)


できないもの
x <- iris
par(mfrow = c(3,2))
histogram(~Sepal.Length, data = x)
histogram(~Sepal.Width, data = x)
histogram(~Petal.Length, data = x)

この場合、ヒストグラムは(小さなサイズでは表示されず)一つのグラフを表示させた時と同じサイズで表示され、連続で図を入力すると並べて表示されずに新しいものが表示されてしまいます(おそらく重ね書きされているだけ)。

アドバイスいただけると嬉しいです。

VC++ からR.dllをロード・Rの関数を実行したい → NG:AccessViolationが発生

(2008-04-13 (日) 18:42:58)

お世話になっております。

VC++6.0上でアプリをつくっています。
目的は「C++のアプリで、C++のソース上からRの関数を実行すること」です。

現在、R.dll をロードさせて、コンパイルを通すことまではできたのですが、Rの関数を呼び出すとAccess Violation が発生して 実行できません。
※バーションは「R-2.4.1」です。

アドバイス頂けないでしょうか。

 以下、私が行った操作です。

 1: R.dllから Rdll.lib を生成
   $pexports R.dll > R.exp

     $lib /def:R.exp /out:Rdll.lib
 2: RのDLLとヘッダーファイルのディレクトリを指定 

   VC++ メニューの「ツール」-「オプション」にて
    ・インクルードファイル "Rのルート"/include

       ・ライブラリファイル   "Rのルート"/bin
 3: 1で作成したRdll.libをリンクさせる

   「プロジェクト」-「設定」
    「リンク」- オブジェクト・ライブラリモジュールに Rdll.libを追加
 4:R言語の関数を呼び出すC++コードを記述して コンパイル
   たとえばこんな感じ

     #include <R.h>
     int main ( void )
     {
      SEXP a = allocVector(STRSXP, 1); // R.dll 内の関数
 
       return 0;
     }

  ※リンクエラーも無く、コンパイルは通ります。

 5:実行
  →NG:allocVector関数コール時にAccessViolationが発生
       (デバッガ・ステップ実行にて確認)
  ・そもそも、R.dll は VC++上から使用できない?
  ・RcppTemplate(R/C++間のインターフェース用ツール)のドキュメントを基に行いました。   

軸の目盛を内側にしたい

名無し (2008-04-13 (日) 14:33:04)

お世話になります。
表題のとおりなのですがどうしたら良いのでしょうか?

side3の軸を下まで持ってくればいけるかと思ったのですが

xlim <- c(1,5)
ylim <- c(2,4)
plot.new()
plot.window(xlim, ylim)
box()
axis(1)
axis(3, pos = ylim[1])

中に浮いてうまく重なりませんでした。

よろしくお願いいたします。

zooオブジェクトをas.tsするとtimeがずれる

名無し (2008-04-12 (土) 17:05:25)

お世話になります

> z <- zoo(matrix(c(1:4),2),c(as.Date("2008-01-30"),as.Date("2008-02-06")))
> z
2008-01-30 1 3
2008-02-06 2 4

上のようなデータがあったとき

>  julian(time(z))
[1] 13908 13915
attr(,"origin")
[1] "1970-01-01"

ですが、as.tsすると

> as.ts(z)
Time Series:
Start = 13909 
End = 13916 
Frequency = 0.142857142857143 
      zoo(coredata(x), tt).1 zoo(coredata(x), tt).2
13909                      1                      3
13916                      2                      4

となりjulianのときは13908,13915だったのにas.tsでは13909,13916となりずれます。(今回のデータではたまたま1ですがそうでない場合もあるようです)

> z2 <- z
> time(z2) <- julian(time(z))
> z2
         
13908 1 3
13915 2 4
> as.ts(z2)
Time Series:
Start = 13909 
End = 13916 
Frequency = 0.142857142857143 
      zoo(coredata(x), tt).1 zoo(coredata(x), tt).2
13909                      1                      3
13916                      2                      4

としてもずれます。

> as.ts(z2, start=13908)
Time Series:
Start = 13909 
End = 13916 
Frequency = 0.142857142857143 
      zoo(coredata(x), tt).1 zoo(coredata(x), tt).2
13909                      1                      3
13916                      2                      4

startは効きませんでした。
なぜなのでしょうか?

複数のデータ(日付毎のデータと週毎のデータ)を重ねてプロットする際に位置がずれて困るのですが対策法があれば教えてください。

バージョン&OSは
R version 2.6.2 (2008-02-08)
i486-pc-linux-gnu
ubuntu8(hardy)
です。

よろしくお願いいたします。

グラフのx軸の作り方を教えてください。

シチノスケ (2008-04-11 (金) 12:27:15)

こんにちは。
http://www.geocities.jp/t_okumurin/080411graph.bmp
にあるようなグラフをRで作りたいのですが,x軸をどうやって指定したらよいかわかりませんので,教えていただけませんでしょうか。
どうぞよろしくお願いいたします。

rJavaで.jinit()に失敗してしまうようです。

はーとりずむ (2008-04-10 (木) 13:30:54)

お世話になります。

質問内容は、WinXP + R2.6.2 + JRE1.6.0_05上でrJavaやiplotを使用しようとすると、エラーが出てしまい、うまく動作しません。
何か問題解決のヒントがあればご教授ください。

ちなみに実行するたびに、出てくるエラーが違うのですが、概ね下記のとおりです。

[パターン1]
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error in .jinit() : Cannot create Java virtual machine (-4)

[パターン2]
以下にエラー .jinit() : Cannot create Java virtual machine (-1)

また、SessionInfo()の情報は下記のとおりです。

R version 2.6.2 (2008-02-08)
i386-pc-mingw32

locale:
LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932

attached base packages:
[1] stats graphics grDevices utils datasets methods base

other attached packages:
[1] rJava_0.5-1 RODBC_1.2-3

以上よろしくお願いいたします。

データフレームのソート方法

masa (2008-04-09 (水) 21:27:41)

例えば、下のようなデータフレームがあるとします。

      A    B   C 
AB    1    6   1
AC    4    1   3
AD    3    3   1
AE    2    5   2
AF    1    1   1
AG    1    2   4


このようなデータをAの列を基準列として、大きい順に並び替え
A列に含まれる3以上を基準としB,Cを順次大きい数字順に並び替えたいと思います。
例えば下のようにです。

     A    B   C 
AC    4    1   3
AD    3    3   1
AB    1    6   1
AE    2    5   2
AG    1    2   4
AF    1    1   1


一つの列のみの並び替えならば、orderを使用することで
並び替えることができました。

アドバイスをいただければと思います。

作業スペースの保存、読み込みについて

初心者 (2008-04-09 (水) 13:54:17)

R終了時に作業スペースを保存して次にそれを読み込むと以下のようなエラーメッセージが出ます。

load("C:\\Users\\tak\\Documents\\R\\workspace\\.RData")

Warning message:
In readChar(con, 5) : can only read in bytes in a non-UTF-8 MBCS locale

「作業スペースの保存」とは現在の作業を保存して次に立ち上げた時に続きができるようにするものだと解釈しています。アドバイスをお願いします。

R version 2.6.2 (2008-02-08)
i386-pc-mingw32

locale:
LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932

attached base packages:
[1] stats graphics grDevices utils datasets methods base

OS=VISTA

[以前にセーブされたワークスペースを復帰します] 起動準備中です ー Warning message:In readChar(con, 5) : can only read in bytes in a non-UTF-8 MBCS locale -- 初心者 2008-04-09 (水) 19:15:31

とのメッセージになります。

画像ファイルへの連続出力

iris (2008-04-09 (水) 10:21:04)

連続する列に対して、自動的に「ヒストグラムを書いて、それを画像ファイルとして保存」という作業をするべく下のようなプログラムを書きました。
ファイル自体はできているのですが、中身は白紙になってしまいます。
アドバイスいただけると嬉しいです。

x <- iris
n <- ncol(x)	#繰り返し回数(列数)の取得
for (i in 1:n){
	file.name <- sprintf("Fig%03i.png", i)	#出力ファイルの通し番号設定
	png(file.name, width = 400, height = 400)	#pngデバイスドライバの用意
	histogram(x[,i])	#i:列, x:データフレーム
	dev.off()
}

変数の削除

ma (2008-04-09 (水) 06:02:51)

データセットから分散が0のものを自動的に削除する方法を探してます。
updateなどを使う方法は理解してますが、一括で行う方法が見つかりません。

データフレーム中のNAの置換

nami (2008-04-08 (火) 23:51:38)

ある2つのデータフレームをmergeした時、欠損値はNAとなってしまいます。
このNAを0に置換したいのですがうまくいきません。例えば、

> datA <- data.frame(x = c("A","B","C"), y = c(1:3))
> datB <- data.frame(x = c("A","B","D"), z = c(4:6))
> (datC <- merge(datA, datB, all = TRUE, by = "x"))
 x  y  z
1 A  1  4
2 B  2  5
3 C  3 NA
4 D NA  6

この中のNAを0に置換したいのです。
datD <- replace(datC, which(is.na(datC)), 0)
などとしてみましたが

以下にエラー `[<-.data.frame`(`*tmp*`, list, value = 0) : 
 新しい列は既存の列に穴を開けるかも知れませんうまくいきませんでした。

となり、うまくいきませんでした。
どなたか、ご教示くだされば幸いです。
環境はR2.6.2、windowsXP SP2です。
宜しくお願いします。

Graphvizの記法をRgraphviz用に翻訳

kado (2008-04-08 (火) 23:17:57)

Graphviz用に書かれたプログラムをRgraphvizで簡単に実行する方法はないでしょうか?

semで得られた結果をグラフ化するとき、いちいちGraphvizを通してグラフを作成するのではなく、Rgraphvizを用いてR上で描画した方が手間が少ないのではないかと考えました。
なにかよい方法はないでしょうか?

データフレームにある重複rownameの操作について

DataFrame (2008-04-08 (火) 16:23:58)

はじめまして、データフレームのrowname操作について質問します。

下のようなデータフレームがあるとします。

   a  b  c
1  h  0  2
2  l  1  3
3  h  1  2 

このデータを次のようにしたいと考えています。

   b  c
h  0  2
l  1  3
h  1  2 

どの様にすればよいでしょうか?解決方法をお願いいたします。

histogramのバグでしょうか?

iris (2008-04-08 (火) 15:14:25)

   a b c

  1 x  x  x   
  2 x  x  x
  3 x  x  x

このようなデータx(具体的にはirisのデータ)のタイトルを数字に変えました。

names(x) <- c(1:ncol(x))
   1 2 3

  1 x  x  x   
  2 x  x  x
  3 x  x  x


こうしたうえで、ヒストグラムを作成します。
histogram(~ 1(←変換したタイトルの番号), data = x)

すると、タイトル変換前とはまったく別の変なヒストグラムが表示されてしまいます。

変換後の数字にシングル・ダブルクオーテーションをつけても無理でした。
histogram(~ '1'(←変換したタイトルの番号), data = x)

逆に、変換を数字でなくアルファベットにしてみると、問題なく変換前と同じヒストグラムが表示されました。
histogram(~ "a"(←変換したタイトルのアルファベット), data = x)

ただ、連続する列に対して、自動的にヒストグラムを書きたいのでタイトルを数字で扱いたいのでこれでは解決策になりません。

原因と解決法などわかる方がいらっしゃいましたらよろしくおねがいします。

 実行するとこんな感じになります…

> x <- iris
> n <- ncol(x)                                       #繰り返し回数(列数)の取得
> for (i in 1:n){
+ file.name <- sprintf("Fig%03i.jpeg", i)   #出力ファイルの通し番号設定
エラー:以下の場所で構文エラーがありました.
"for (i in 1:n){
file.name <- sprintf("Fig%03i.jpeg", i)
> png(file.name, width = 400, height = 400)  #pngデバイスドライバの用意 
以下にエラーpaste("png:", filename, sep = "") : 
       オブジェクト "file.name" は存在しません
> histogram(x[,i])                          #i:列, x:データフレーム
エラー:"histogram(x[,i]) 
> dev.off()
以下にエラーdev.off() : デバイス 1 をシャットダウンすることが出来ません(NULL デバイスです)
> }
エラー:"}" に構文エラーがありました

パッケージがインストールできません

pank (2008-04-08 (火) 11:09:51)

初歩的な質問ですみません。パッケージインストール時に以下のようなエラーメッセージが出ます。たとえば“ctv”をインストールしようとすると

install.packages("ctv")

install.packages("ctv") 中で警告がありました: 
 'lib = "C:/PROGRA~1/R/R-26~1.2/library"' は書き込み可能ではありません  
以下にエラー install.packages("ctv") : 
  パッケージをインストール出来ませんでした 


OSはVISTAです。いずれのパッケージに対しても同様のエラーが出ます。どなたか解決策をよろしくお願いします。

(追記) sessionInfo() R version 2.6.2 (2008-02-08) i386-pc-mingw32

locale: LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932

attached base packages: [1] stats graphics grDevices utils datasets methods base

列数(あるいは行数)不明のデータの列数(行数)をカウント

はじめ (2008-04-07 (月) 17:46:51)

初歩的な質問で申し訳ありません。

題名そのままなのですが、
列数(あるいは行数)不明のデータの、列数、行数をカウントするのはどうすればよいのでしょうか?

データフレーム中で、最も近い値との差を求める

なつめ (2008-04-07 (月) 07:47:04)

初心者です、よろしくお願いします。
2列(xとy)× 100行のデータフレームがあります。
私がやりたいと思っていますのは、xの1行目から100行目のそれぞれの値に対して、
最も大きさが近い値をyの1から100行目から探し、その差を、それぞれのxの値に対して、つまり計100個求めるというものです。
どのようにしたら良いでしょうか?

月別発生率の分析について

ポアソン (2008-04-04 (金) 13:00:09)

下のデータは数年間に発生した二つの事象の月別発生数を示したものです。

table(DAT_g$month)

1  2  3  4  5  6  7  8  9 10 11 12 
1  1  0  1  1  1  2  1  0  1  1  0 

table(DAT_d$month)

1  2  3  4  5  6  7  8  9 10 11 12 
2  1  3  4  2  0  0  3  2  2  0  4 


これらから、月ごとの発生に差があるかどうかを示したいのですがどうしたらよろしいでしょうか。

stepAICについて

ぽい (2008-04-03 (木) 01:59:51)

ARIMAモデルの変数選択をstepAICを使用して行いたいのですが、そもそもstepAICはARIMAモデルでも使用できるのでしょうか?
また、変数の入力方法は

scope=~x1*x2*x3

という方法でいいのでしょうか。

CSVのインポートエラー

basel_firb (2008-03-30 (日) 09:29:36)

Window R 2.5.1を使用しています。
デスクトップ上にあるCSVファイル「test.csv」を「read.csv」構文を実行すると
以下のようなエラーが出ます。

A<-read.csv("test.csv")

以下にエラーfile(file, "r") :  コネクションを開くことができません
追加情報: Warning message:
ファイル 'test.csv' を開くことができません, 理由は'No such file or directory'です in: file(file, "r") 


directoryを指定しなければだめなのでしょうか?
また、directoryの指定方法をご教授願います。

画像の拡大

きのねっこ (2008-03-27 (木) 11:01:16)

初めて投稿させていただきます。よろしくお願いします。
現在群平均法をつかってクラスター分析を行ない樹形図に可視化しております。(ちょうど下に投稿している ”行列の読み込み”の内容が似ております。)
その際樹形図が1000個のデータからできているので、画像に変換したとき画像がつぶれてしまって詳細がみれなくなってしまいます。ビットマップやメタデータでダウンロードして拡大しようとしてもつぶれたままで拡大してしまい見れません。
なんとかこれを解消したいので、是非教えていただけると非常に助かります。

try関数を使用してもエラーが出ます

ぽんぺい (2008-03-24 (月) 15:57:06)

ARIMA(p,d,q)モデルの次数をfor文でまわして、全通りの結果を得たいのですが、次数の組み合わせによっては、non-stationary seasonal AR part from CSSというエラーが出ます。

このfor文をtry()のなかに入れて行ってもエラーで止まってしまいます。
どのようにtryを使用すれば、エラーが出ても最後までまわすことができるのでしょうか。

IF文でエラーがでます

こやま (2008-03-19 (水) 13:50:36)

条件分岐式で計算をしようとするとエラーが出ます。非常に初歩的な質問ですみませんが、解決のヒントをいただけないでしょうか。データは文字列"t"を含むデータで、以下の様になっています。

x        y
t	t
55	219
t	t
234	-293
-122	371
t	t
-22	-312
t	t
349	182
343	-324

このデータについて、t以外の数値について条件に合致した時だけ合計する式を以下のように書きました。

n <- nrow(data)
a1 <- 0
a2 <- 0
a3 <- 0
a4 <- 0
a5 <- 0
b1 <- 0
b2 <- 0
b3 <- 0
b4 <- 0
b5 <- 0
for (i in 1:n){
   x <- data[i,1]
   y <- data[i,2]
   if ((x != "t") & (y != "t")) {
       if ((x >= 0.0) & (y >= 0.0)){
	        a1 <- a1 + x
	        b1 <- b1 + y
       }else if ((x >= 0.0) & (y < 0.0)){
	        a2 <- a2 + x
	        b2 <- b2 + y
       }else if ((x < 0.0) & (y <= 0.0)){
	        a3 <- a3 + x
	        b3 <- b3 + y
       }else if ((x < 0.0) & (y > 0.0)){
	        a4 <- a4 + x
	        b4 <- b4 + y
       }else{
	        a5 <- a5 + x
	        b5 <- b5 + y
       }
   }else{
   }
}

これを走らせると、以下のようにエラーがでます。欠損値にならないようにt以外のデータを計算するようにしたつもりですが、うまくいかないようです。長くなってすみませんが、どうぞよろしくお願いします。

以下にエラーif ((x >= 0) & (y >= 0)) { : TRUE/FALSE が必要なところが欠損値です
追加情報: 警告メッセージ:
1: >= 因子に対しては無意味です in: Ops.factor(x, 0) 
2: >= 因子に対しては無意味です in: Ops.factor(y, 0) 


関数がみつからない

あだむす (2008-03-18 (火) 18:58:52)

はじめて投稿します。よろしくお願いします。
多重比較のパッケージmultcompの中にある関数simtestを使いたくてmulticompをインストールしました。具体的に関数simtestの使い方を見たくて
help(simtest)とすると、パッケージはインストールされているはずなのにドキュメントがないというエラーが出てしまい困っております。

library(multcomp)

help(simtest)
No documentation for 'simtest' in specified packages and libraries:
you could try 'help.search("simtest")'

help.searchでも同様にエラーがでました。libraryの中にはmultcomとmvtnormのパッケージのフォルダがあったのでインストールはされていると思うのですが・・・。

ちなみにRのバージョンは2.6.2でOSはWindows XPです。

semのモデル指定について教えてください

おくむら (2008-03-11 (火) 18:05:48)

こんにちは。semパッケージを使って,
http://www.geocities.jp/t_okumurin/sem.JPG
にあるようなモデルを分析したいと思うのですが,これをフィットさせるためのモデルの指定をどうしたらいいか教えてください。
一応,

modelsem <- specify.model()
t1 -> x1, b11, 1
t1 -> x2, b12, 1
t2 -> y1, b21, 1
t2 -> y2, b22, 1
t1 <-> t2, cort, NA
e1 -> x1, be1, 1
e2 -> x2, be2, 1
e3 -> y1, be3, 1
e4 -> y2, be4, 1
x1 <-> x1, d1, NA
x2 <-> x2, d2, NA
y1 <-> y1, d3, NA
y2 <-> y2, d4, NA

こんな感じかと思ったのですが,うまくいかないので。
よろしくお願いします(ちなみに,SASではうまくいきます)。

modelsem <- specify.model()
t1 -> x1, NA, 1
t1 -> x2, NA, 1
t2 -> y1, NA, 1
t2 -> y2, NA, 1
t1 <-> t2, phi12, NA
x1 <-> x1, del1, NA
x2 <-> x2, del1, NA
y1 <-> y1, del2, NA
y2 <-> y2, del2, NA
t1 <-> t1, NA, 1
t2 <-> t2, NA, 1

変数名のないExcelファイルの読み込み

朝からずっと悩んでます (2008-03-10 (月) 16:44:46)


変数名がなく,1行目からデータが入力されている Excel ファイルを読み込みたいのですが,
RODBC パッケージの odbcConnectExcel と sqlQuery を使って読み込むと,
どうしても1行目が変数名扱いになってしまうので,1行目の数値が読み込めません。
read.table の header=F のような読み込み方をするには
どうしたらいいでしょうか?

R のバージョンは 2.6.0, OS は Windows XP,
MS-Office 2003 を使用しています。

X11フォントの設定

きむら (2008-03-05 (水) 19:12:50)

なかま さんの "R for OSXでIPAフォントの利用" を行っていたのですが、X11フォントの設定の "~/.Rprofile" ファイルが見つかりません。 OSはOS X 10.4ですが、ターミナルで "cd ~" "ls -a" としてみましたが表示されません。 不可視ファイルだと思いますが、どこにあるのでしょう?

ccf()データの出力方法

こやま (2008-03-04 (火) 16:36:00)

Rで、二つの時系列データの相互相関を調べたいと思い、ccf関数を用いて計算を行いました。
計算結果はグラフになって出たのですが、相関係数の値を出力しようとすると、以下のようにエラーになって出力できません。

 result1 <- ccf(dt[ ,1], dt2[ ,1], lag.max = 120, type = "correlation", plot = TRUE)

 write.table(result1, file = "C:/R/result1.txt")

以下にエラーas.data.frame.default(x[[i]], optional = TRUE) : 
       クラス "acf" はデータフレームに強制変換できません


(result1)と括弧をつけるとR画面上には出力されますが・・・。また、write()とした場合は、以下のようにエラーが出ます。

write(result1, file = "C:/R/result1.txt")

以下にエラーcat(list(...), file, sep, fill, labels, append) :

       引数 1 は,まだ cat で取り扱えません


どのようにすればテキストデータに出力できるでしょうか?
初歩的な質問で申し訳ありません。よろしくお願いいたします。

行列の読み込み

R初心者 (2008-03-03 (月) 13:00:34)

Rを用いてクラスター解析を行おうと考えています。
このとき、はじめから入っているユークリッド距離とかではなく、
自分で定義した類似度を用いたいと考えています。
そこで、perlを用いて類似度の行列を作成しました。
(行列の形は三角行列です。)
しかし、読み込もうとすると、要素が有りませんとエラーが出てしまいます。
類似度のデータをどのような形で取り込めば良いのでしょうか?
教えてください。お願いします。

棒グラフのerror barについて

初心者です。。。 (2008-02-29 (金) 14:47:17)

棒グラフとerror barで
mean±se
をあらわす方法を教えて下さい。
barplotで棒グラフはかけるのですが、どうやってerror barを
つけたらよいのでしょうか?
宜しくお願いします。

出力結果の"[1]の意味"は、何ですか?[2]の時もありますか?

ろろ (2008-02-27 (水) 01:36:41)

[1]を出力しない方法を教えて下さい。
よろしくお願いします。

データの個数を得る方法

すろん (2008-02-26 (火) 13:18:54)

はじめまして。お世話になります。
length()を使うと,

> data_a <- c(1.5, 1.2, 1.3, 1.6, 1.2, NA, 1.2, 1.5, 1.7, NA)
> length(data_a)
> [1] 10


のようにベクトルdata_aの長さを得ることができます。この場合,NA値もカウントされます。length()では,na.rm=TRUEのような使い方ができません。NA値を除いた数値の数のみを得たい場合には,どのようにすれば良いのでしょうか?

これまでに私が試したのは,(1)あらかじめNA値を削除したベクトルを作成してからlength()を実行する。(2)xtab()やtable()などで集計表を改めて作る。というようなものです。また,RjpWiki上で「データ数を得る」や「データ長」ののような語句で検索をしました。また,

> library(help="base")
> library(help="stats")


などを実行して探したり,「The R Tips」,「Rプログラミングマニュアル」等の解説本で,基本統計量に関する項目などを当たりましたが,よくわかりませんでした。横着をしなければ問題は感じられないことと思いますが,もしlength()やmean(), sum()などのように単純に求められる方法をご存じでしたら,是非教えていただきたいと思います。どうぞよろしくお願いいたします。

ところで,「簡単な投稿法」を参考にしたかったのですが見あたりません。見られなくなっているのでしょうか?

osx leopardでRを使用している時に、escキーを押すと落ちてしまう

satou (2008-02-22 (金) 23:38:08)

題名の通りですが、osx leopardでRを使用している時に、escキーを押すと落ちてしまいます。
正確に言うと、マウスカーソルが待機中(虹色でぐるぐるしてるやつです。)になり、操作を受け付けなくなってしまいます。同様の現象が出ている方、あるいはその現象を解決した方がいましたら、情報頂けると助かります。

   OS:Mac OS X 10.5.2
   sessioninfo()の出力
   R version 2.6.2 (2008-02-08)
   i386-apple-darwin8.10.1

   locale:
   ja_JP.UTF-8/ja_JP.UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8

   attached base packages:
   [1] stats graphics grDevices utils datasets methods base

tableやxtabsを用いてカウントではなく数値合計を集計するには?

はいどらりすく (2008-02-22 (金) 17:14:51)

お世話になります。
仕事でtableやxtabを使って簡単な集計をしているのですが、これらの関数ではカウントができても数値の合計ができません。
具体的には、部署別売り上げデータから年度別の部署ごとの売り上げ集計表を作りたいのです。当然、カウントではなく個々のデータが持っている売上額を合計して作表しなくてはいけませんが、このやり方がわからないのです。例を示しますと

売り上げNo 部署    売上月 金額
     1 第2営業部   01  200
     2 第2営業部   02  100
     3 第1営業部   02   50
     4 第3営業部   03  300
     5 第1営業部   04  200
     6 第2営業部   04  500
     7 第3営業部   05  200
     8 第1営業部   06  100
     9 第1営業部   06   50
    10 第2営業部   06  200

      ↓↓↓↓↓

      売上げ月
部署     01   02   03   04   05   06
第1営業部     0   50    0  200    0  150
第2営業部   300    0    0  500    0  200
第3営業部     0    0  300    0  200    0


のような集計を行いたいのです。
tableやxtabsのソースを見て改造しようとも考えましたが、今の自分には全くチンプンカンプンでした。
どうぞよろしくお願い申し上げます。

pdf と postscript を一発で

もちだひろつぐ (2008-02-21 (木) 01:23:34)

pdf ファイルと postscript ファイルを作成したいのですが、今のところ

pdf('file.pdf', width=11, height=8.5)
plot(0,0, xlab='nothing', ylab='nothing', main='NOTHING')
dev.off()


postscript('file.eps', width=11, height=8.5)
plot(0,0, xlab='nothing', ylab='nothing', main='NOTHING')
dev.off()


と pdf() と postscript() を別々に走らせています。
これを一度で済ます方法はありますか?

上記の例だと、 plot() のところがシンプルですが、これに axis() やら legend() やら何やら加わってくると、二度走らせるのがめんどうちいです。
よろしくお願いします。

コネクションが開けない

あんころ (2008-02-20 (水) 22:12:01)

txtファイルを読み込もうとすると、

file(file,"r"):コネクションを開くことができません

というエラーが出て読み込めません。
このエラーの意味は何でしょうか?
また、読み込むデータ量に限度などはあるのでしょうか?

直和を使ってブロック対角行列を作りたい

シチノスケ (2008-02-14 (木) 11:08:59)

こんにちは。
今,list形式でxj(jは1からJまで)のデータが入っているとします。これを対角要素にもつブロック対角行列Xを新たに作りたいのですが,直和を実行するためのプログラムをご存じないでしょうか?

自分の作成した名前にデータを関連付けたい

みゅ (2008-02-13 (水) 06:19:19)

プログラムを書きながら前々から疑問に思っていたのですが、出来る範囲で調べてもいつもわからず、そもそもできるの事なのかできない事なのか、キーワードも調べ方もわからなくて行き詰っています。解決の方法か、鍵になる単語か、教えていただけないでしょうか。(やりたいことは明らかなのですが、うまく説明が出来なくて伝わりにくいかもしれません。例を書くので、まどろっこしいかもしれないのですが許してください。)

> DATA <- matrix(1:30,5,6)

という値が入っているDATAがあったとする。
自分が生成した名前にこのデータを持たせたいと思っている。
名前の生成はたとえば、sprintf(paste("data","A",sep="_"))
とすれば生成可能ですね。でもこれは普通、

> my_name <- sprintf(paste("data","A",sep="_"))

のように使い、

> my_name
> "data_A"

となると思います。
このとき、先のDATAの値をdata_Aに持たせるのは
どのようにすればいいか、ということです。
もちろん、

> my_name <- DATA

とすると

> my_name
> (ここに5×6の先の行列が表示される)

なので、先に入れた"data_A"はきえてしまいます。

> DATA <- matrix(1:30,5,6)
> my_name <- sprintf(paste("data","A",sep="_"))
> ?????何らかの操作???????
> data_A
> (ここに5×6の先DATAの行列が表示される)

というような感じに使いたいのですが・・・。
?????何らかの操作???????は何を調べたらわかりますか????
そもそもこういうことは出来るんでしょうか???

plotのx軸を任意の値にしたい

たいち (2008-02-12 (火) 12:48:47)

こんにちは。
初歩的な質問で恐縮ですが,plot関数でグラフを作るとき,x軸の値を強制的に「4,8,12,16,20」などのように表示させるにはどうしたらよいのでしょうか?デフォルトのままだと「5,10,15,20」となってしまうのですが…。
どうぞよろしくお願いします。

データが無い(エラーの)場合の戻り値の指定

たけ (2008-02-10 (日) 11:04:03)

どろどろとしたデータの整形をしていまして、例えば

x1 <- matrix(1:6,ncol=3) ;x2 <- matrix(1:4,ncol=2)
colnames(x1) <- c("A","B","C"); colnames(x2) <- c("A","C")

のような、列数・順序が不ぞろいなデータがもともとあって、x1[,"B"]でTRUEを返すことは容易にできますが x2[,"B"]で添字エラーではなくて、Falseを返す方法はありますでしょうか。 
変わりの方法として使われる列名は決まっているので、grep("B",colnames(x2))と検索をかける方法も試してみましたが、logical(0)という戻り値をうまくTrue/Falseにするような扱いができずに悩んでいます。ご助言頂ければ幸いです

Cairoで日本語が文字ばけ

okinawa (2008-02-10 (日) 09:30:46)

IntelMac,OSX10.5,R2.6.1
SVG出力させたいので、Cairoパッケージを導入しました。

library(Cairo)
CairoSVG("/test.svg")
x<-rnorm(1:10)
plot(x)
title(main="試行")
dev.off()


で、出力されたtest.svgをダブルクリックするとsafariがきどうしてSVGが表示されますが、"試行"部分が文字化けします。
いろいろ調べたのですが、解決できませんでした。
どなたか、ご存知の方いらっしゃいませんでしょうか?
よろしくお願いします。

RのWebServiceを作りたい

akira (2008-02-08 (金) 23:43:05)

WebServerの勉強も兼ねてRが稼働するWebServiceをlocalに建てようと思ってます。
Rweb-jpとかの設定はどうやっているのでしょうか?
apacheはここを参考にしています。お薦めがあれば教えてほしいです。

> sessionInfo()
R version 2.6.1 (2007-11-26)
i486-pc-linux-gnu
locale:
LC_CTYPE=ja_JP.UTF-8;LC_NUMERIC=C;LC_TIME=ja_JP.UTF-8;LC_COLLATE=ja_JP.UTF-8;
LC_MONETARY=ja_JP.UTF-8;LC_MESSAGES=ja_JP.UTF-8;LC_PAPER=ja_JP.UTF-8;LC_NAME=C;
LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=ja_JP.UTF-8;LC_IDENTIFICATION=C
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base
loaded via a namespace (and not attached):
[1] rcompgen_0.1-17
  • どうでもいいけど。あれ,死んでるでしょ? -- 2008-02-08 (金) 23:46:57
  • 個人的には、昔に参考にしたRpadがいいように思います。http://www.rpad.org/Rpad -- okinawa 2008-02-09 (土) 08:58:54
  • windowsですが、昔作ったRwwwのページがあります。参考になるかわかりませんが、WebServerとRのやりとりをActiveBasicで作ったCGIでやっています。 -- okinawa 2008-02-09 (土) 11:40:28
  • レスが遅れてすみません。Rの設定の前にServerに思いのほか苦戦しており、基礎から勉強する必要がありそうです。涙 -- akira 2008-02-15 (金) 21:07:51

自分自身のIPアドレスの取得

okinawa (2008-02-08 (金) 16:33:40)

winXPsp2,R2.5.1
プログラム中で、自分自身(Rが動いているPC)のIPアドレスを取得する必要が出てまいりました。
いろいろ調べたのですが、探せませんでした。
どなたか自分自身(Rが動いているPC)のIPアドレスを取得する関数をご存知ないでしょうか?

回帰分析のsummaryの保存

nob (2008-02-07 (木) 16:47:36)

Rで回帰分析のスクリプトを書いて実行しています。
スクリプト中

sink(file="summary.txt")
summary(kaiki)
sink()

としているのですが、summary.txtには何も保存されていません(空っぽのファイルはできる)。
コンソール上で1行ずつ入力すると保存できますが、スクリプトで 一気に保存できる方法はありますか? よろしくお願いします。

Rcmdrでの変数の複数選択

okinawa (2008-02-07 (木) 14:42:40)

winXPsp2,R2.5.1,Rcmdr1.3.5

Rcmdrで重回帰分析やクラスター分析をする場合、変数を複数選択するところが出てきて、マウスでクリックすることで複数選択しますが、1つ置きに選択することができません。(連続したものしか選択できない)
一つ置きに選択する方法があるのでしょうか?

パッケージがインストールできない?

sho (2008-02-05 (火) 01:29:02)
自宅のPCにもRを導入しようとしたのですが、うまくいきません。
OSはビスタで、R2.6.1をインストールしたのちRcmdrのパッケージを読み込み、足りないパッケージをインストールしたのですが以下のようなのが出てきてしまいます。

local({pkg <- select.list(sort(.packages(all.available = TRUE)))
if(nchar(pkg)) library(pkg, character.only=TRUE)})
要求されたパッケージ tcltk をロード中です Tcl/Tkインターフェースのロード 終了済
Please select a CRAN mirror for use in this session ---
utils:::install.packages(missing.packages[present], dependencies = TRUE, 中で警告がありました:
'lib = "C:\Users\■■■\Local Settings\Application Data\R-core\R/R/win-library/2.6"' is not writable
Error in utils:::install.packages(missing.packages[present], dependencies = TRUE, :
unable to install packages
Error in structure(.External("dotTclObjv", objv, PACKAGE = "tcltk"), class = "tclObj") :
[tcl] error reading bitmap file "C:\Users\■■■\Local Settings\Application Data\R-core\R\R\win-library\2.6\Rcmdr\etc\Rcmdr.xbm".
Error : .onAttach は 'attachNamespace' で失敗しました
エラー: 'Rcmdr' に対するパッケージもしくは名前空間のロードが失敗しました

一体どうしたらよろしいのでしょうか?
よろしくお願いいたします。

R の速度(pvclust)

yamaoyaji (2008-02-04 (月) 07:23:24)

ライブラリpvclustを用いてデータ解析をしています。
Mac OSX (10.5.1)+R(2.6.1)(Core2duo 2GHz) で解析する場合と
Fedora8(64bit) + R(2.6.1)(Core2duo 3GHz)で同じデータを解析すると約10%程度Fedoraの方が遅いです。Openmpi+Rmpi+snowでクラスタ解析をしても同じCPU数の場合、差は開く一方でした。
Fedoraの方が自由度が高く、Rを最適化できることは重々承知しておりますが、スキルがありません。ソースからのインストールもしてみましたが、あまり変化はありませんでした。
質問させていただきたいのは、なるべくdefaultの設定で早い速度のでるRを
保持できるLinuxのdistributionはどれがお勧めでしょうか。
よろしくお願いします。

(密度)関数の線形和

kaneko (2008-02-02 (土) 16:23:24)

t分布の密度関数の線形和を返す関数を作ろうとしています.
例えば,自由度がそれぞれ10, 15, 5のt分布密度関数dt(x, 10), dt(x, 15), dt(x, 5)に対して,それぞれの自由度で重み付けした関数(の和)を
function(x){10*dt(x, 10)+15*dt(x, 15)+5*dt(x, 5)}
というように作りたいと思っています.

上の例のように加える関数の数が少ないならばすべて書き出せばいいですが,数が多くなる(約20個を想定)と大変なので,自由度のベクトルと密度関数のベクトルの内積(?)のような形でスクリプトが書けないだろうかと悩んでいます.

上記の線形和は,ある検定関数を作るためのものです.なお,Rの使用環境は version 2.6.1をOSXで使っています.

以上,ご教示頂ければ幸いです.

バックスラッシュ奇数個の文字列を

hidee (2008-02-01 (金) 14:54:01)

バックスラッシュが3個並んだ文字列を作りたいのですが, 単純にダブルクオーテーションのあいだに2つ並べると2つのバックスラッシュが, 奇数個並べると次の文字が奇数個目のバックスラッシュはその次の文字のエスケープに使われてしまい, 結果,生成される文字列はバックスラッシュ偶数個のものしかできません.
余分に生成しておいてsubstr()なんていうのも考えてみたんですが,これも偶数個以外ははねられてしまうようです.
よい方法が思い浮かばないのですが,ご教授いただけませんか.

> "\\\hline"
[1] "\\hline"
Warning messages:
1:  '\h' は文字列で認識されないエスケープです  
2:  "\\\hline" から認識されないエスケープを取り除きました  
> "\\\\hline"
[1] "\\\\hline"
> substr("\\\\hline", 1, 999)
[1] "\\\\hline"
> substr("\\\\hline", 2, 999)
[1] "\\hline"
> sessionInfo()
R version 2.6.1 (2007-11-26) 
i686-pc-linux-gnu 

locale:
LC_CTYPE=ja_JP.eucJP;LC_NUMERIC=C;LC_TIME=ja_JP.eucJP;LC_COLLATE=ja_JP.eucJP;
LC_MONETARY=ja_JP.eucJP;LC_MESSAGES=ja_JP.eucJP;LC_PAPER=ja_JP.eucJP;LC_NAME=C;
LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=ja_JP.eucJP;LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets 
[6] methods   base     

loaded via a namespace (and not attached):
[1] tools_2.6.1
>

因子に対しては無意味です

LUKE (2008-01-28 (月) 17:45:57)

時系列データを扱っていいて
二種類のデータを使って試したところ
ひとつだけ
Warning message:
In Ops.factor(left, right) : * 因子に対しては無意味です
というメッセージが出てきます。
データの構造によるものなのでしょうか?
アドバイスをいただけたらと思います。

Book <- read.csv( a.csv', header = TRUE )
nTime1 <- nrow( Book )
flag1 <- Book[-nTime1,] != 0
BookValue1 <- rbind( 0, Book[-1,] * flag1 )

R version 2.6.1 (2007-11-26)
i386-pc-mingw32
locale:
LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;
LC_NUMERIC=C;LC_TIME=Japanese_Japan.932
attached base packages:
[1] stats graphics grDevices utils datasets methods base

ライブラリの使い方(目標はRのフィンメトリックス並実装)

ポンタ (2008-01-25 (金) 15:40:56)

Rをフィンメトリックス並に実装する方法を知りたく思いメールいたしました。なお、現在rcommanderなどは実装しています。

色々なhpを見て東大のライブラリからrを使って全てのパッケージをインストールすることまではやってみたのですがまず単位根検定の出し方が良く分かりません。(東大のライブラリは全部ダウンロードしました)

できれば多変量ARモデルなども動かしてみたいのですがどのように探し、どのようにセットすればよいのでしょうか?

あと、追加質問ですが、そもそも、ダウンロードしたパッケージは何かしないと使えないものでしょうか・・・
(全くの初心者ですがどなたかご教授いただければ幸いです。)

多変量GARCH

たく (2008-01-16 (水) 18:41:23)

例えば現物と先物のボラティリティを推定したい場合、2変量GARCHモデルを用いるのが一般的と思いますが、

Rには多変量GARCHモデルの関数はないのでしょうか?

検索して見つかった、tseriesパッケージやfSeriesパッケージ内のGARCH関連の関数は、みな1変量用だった気がします。

複数枚のグラフを、一つのファイルにまとめて保存するには?

Yoshihara (2008-01-16 (水) 03:12:00)

前例がある内容でしたら申し訳ございません。

forループの中で条件を変化させて複数枚のグラフを出力し、それら全てを一つのファイルにまとめて保存しようと思っております。

例えば以下のようなプログラムで5種類のグラフを作成しても、"graph.pdf"に保存されるのはi=5におけるグラフのみです。

for(i in 1:5){
  name<-paste("No.",i,".pdf",sep="")
  curve(x+i,main=name)
  dev.copy(pdf,file="graph.pdf")                #ファイルの保存
  dev.off()
}

現在は dev.copy(pdf,file=name)として毎回名前を変え保存しておりますが、
グラフ数が増えると処理が面倒になるため、一つのファイル名に、ページを変えることでまとめて保存したいと考えています。

自分なりに調べてみたのですが、行き詰ってしまいました。

どなたかご教授をお願い致します。

RMySQLパッケージの読み込みエラー

だあ (2008-01-15 (火) 14:41:37)

RMySQLパッケージをダウンロードした後に読み込もうとすると、
「Rgui:Rgui.exe - エントリーポイントが見つかりません:プロシージャエントリポイントload_defaultsがダイナミックリンクライブラリLIBMYSQL.dllから見つかりません」
というエラーが表示され、読み込むことができません。
MySQL5.0を利用しており、DBIパッケージの読み込みまでは行ったのですが、原因が思い当たる方はいらっしゃいますでしょうか。

Rを自動で起動・終了させるには?

春一番 (2008-01-14 (月) 18:57:22)

初めまして。Rの初心者なので分らないことばかりですが、宜しくお願いします。他のサイトでExcelのデータをRに移動しデータ解析が出来ることを知りました。ソフトウエアは、Visual Basic 2005,Excel2003,R2.20,RExcel v1.35です。私がしようとしていることは、Visual Basic 2005でプログラムを作成し、画面に視標を呈示します。その視標が見えたか見えないか披検者は答えます。答えた瞬間に、その結果をExcelに保存します。Excelに保存されたらすぐにRを起動し最尤法のプロビット分析を用いて50%閾値を求めます。その結果をExcelに戻し、そこからVisual Basic 2005に戻し次の視標を呈示します。これを30回〜40回自動で繰り返したいのです。こんなことは可能なのでしょうか。また、サンプルコードはあるのでしょうか?お忙しいと思いますが何卒宜しくお願い申しあげます。

foldまたはreduceのような機能はありますか?

lambda (2008-01-13 (日) 04:22:49)

sumとprodは見つけたのですが、足し算、かけ算以外の任意の演算で畳込みを行うときにはどうすればいいのかわかりません。
Rではベクトル化された関数を使ってmap関数と同等のことが出来たり、論理値ベクトルを[]に入れてfilter関数と同等のことが出来たりしますが、
fold関数等がなくても直接的に畳込みをする方法があったりするのでしょうか?
それともforを使って地道に変数に累積していくしかないんでしょうか…。

SQLファイルから読み込んだベクトル様データのベクトル化の仕方

あーちゃんぱぱ (2008-01-11 (金) 23:35:13)

全くの初心者です,よろしくお願いします.
MySQLのデータベースからデータを読み込んで解析を行おうとしているのですが,利用したいデータの構造が,"120, 500, 554, 578" という様なベクトル構造をしている為に読み込むと文字列として認識されてしまいます.なんとかして,このデータからベクトル c(120, 500, 554, 578)を得たいのですがどうすれば良いのでしょうか?解決法を教えて下さいよろしくお願いします.

Rcmdrのダウンロード

SIS (2008-01-11 (金) 17:15:44)

記載場所が違っていたら申し訳ありません。
windows版 R 2.4.1をインストール後、Rcmdrをダウンロードしようとしたところ、一部の関連パッケージはインストールできたのですが、ほとんどのパッケージについて

URL 'http://cran.md.tsukuba.ac.jp/bin/windows/contrib/2.4/Rcmdr_1.2-9.zip' を試しています
以下にエラーdownload.file(url, destfile, method, mode = "wb") :
URL'http://cran.md.tsukuba.ac.jp/bin/windows/contrib/2.4/Rcmdr_1.2-9.zip' を開けません
追加情報: Warning message:
開けません:HTTP ステータスは '403 container violation' です
download.packages(pkgs, destdir = tmpd, available = available,  中で警告がありました:
download of package 'Rcmdr' failed

といったエラーが出てしまいました。 googleなどを検索したのですが、どのようにすれば解決するかが分かりません。 解決策をお教えください。

tapplyを使ったグラフ作成

tukey (2008-01-11 (金) 11:47:06)

以下のように、ある区分(以下の例では、"TYPE")ごとにヒストグラムを作成することを考えておりますが、タイトルにどの区分かを表示したいと考えておりますが、どのようにすればよいか教えてください。
それぞれの区分のタイトルに、
Histogram of TYPE=1
Histogram of TYPE=2
と表示したいと考えております。

以下に簡単なプログラムの事例を載せます。

AGE<-c(30,80,90,77,65,33)
TYPE<-c(1,1,1,2,2,2)

myhist <- function(x){
	hist(x,main=paste("Histogram of TYPE=",1))
}

tapply(AGE,TYPE,myhist)

プロビット分析で出てくるエラーについて

kuro (2008-01-10 (木) 05:46:11)

はじめまして。
プロビット分析を行なっていて出てくるエラーの意味について教えて下さい。

当方、MASSパッケージを読み込んで、順序プロビット分析(polr()関数を使う)を行なっています。以下は、Rのコンソール画面です。

> library(MASS)
> data<-read.table("data.dat",header=TRUE)
> data[1:3,]
  popul TVnews selfLR ClinLR DoleLR PID age educ income vote reldist
1     0      7      7      1      6   6  36    3      1    1      -5
2   190      1      3      3      5   1  20    4      1    0       2
3    31      7      2      2      6   1  24    6      1    0       4
> summary(polr(as.ordered(ClinLR) ~ TVnews+selfLR+PID+age+educ+income, data=data))


と入力すると、

 Error in svd(X) :  'x' に無限値か欠測値があります 


と表示されます。
このエラーが何を意味しているか分からないのですが、ご存知の方がいらっしゃったら教えて下さい。よろしくお願いします

[getOption("max.print") を越えました -- 末尾 190 行を省略します]

竹の山 (2008-01-08 (火) 22:28:33)

昨日から始めた初心者です。
900行X150列程度のデータのテキストファイルを分析したいので、

x >- read.table(“G1.txt”, header=TRUE)
でRに読み込んで、その結果を

x
で見ようとすると全部は見れません。これはアーカイブにある「R Consoleの表示容量について」の内容と同じですが、sink 関数を使って作ったテキストファイルの最後に以下のようなメッセージが出て少略されてしまいます。

[getOption("max.print") を越えました -- 末尾 190 行を省略します]]


R version 2.6.1 (2007-11-26)
i386-pc-mingw32

locale:
LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932

attached base packages:
[1] stats graphics grDevices utils datasets methods base

ベクトルを割り当てることができないのはメモリ不足が原因?

Saito (2008-01-06 (日) 23:27:04)

WindowsXPでR2.6.1を使って一般化線形モデルによる解析を行っています。
データを読み込んでさぁ解析といったところで、次のようなメッセージがでました。

x=read.table("a.txt",header=T)
result=glm(A~.,data=x)
エラー:  サイズ 294.8 Mb のベクトルを割り当てることができません 

初級Q&Aの"Step関数の実行"など、似たような事例はあったのですが解決には至りませんでした。
ただ、そのやり取りの中で出てきた「WindowsのBoot.iniに/3GBスイッチをつける」 という箇所のみ調べてもできなかったので、
それで解決するというのならおしまいなのでしょうが(汗)
ちなみにglmではなくbiglmだとできるのですが…。

result2=biglm(A~B+C+D+...+Z,data=x)
step(result2)
以下にエラー UseMethod("extractAIC") : 
"extractAIC" に適用可能なメソッドがありません 

というメッセージが出てstepしても何故かできないし(一応extractAICも調べましたが…よくわかりませんでした)、そのあとのモデル選択ができないんです…。
つまり、エラーが出なくなった上でstep関数等でモデル選択ができるような解決方法、
をどなたかご存知でしたらご教授お願いします。ちなみに

> memory.size(T)
[1] 801.5625

また、memory.limitは4095に設定してあります。
よろしくお願いします。


添付ファイル: filedouble_pkg_instlr.jpg 1970件 [詳細] fileboxplot.png 2048件 [詳細] fileboard.png 2623件 [詳細] filenls.png 2584件 [詳細] filepackage.png 2089件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-25 (土) 11:19:16