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

注意:このコーナーは重量オーバーで表示に時間がかかり過ぎるようになりました。今後は過去記事へのコメントを除き、新設の Q&A (初級者コース) コーナーを利用下さい。

Callの中身の値を変数に取得したいです。

sally (2005-04-26 (火) 11:57:46)

こんにちは。国際化おめでとうございます。
今、グラフプロットに直線回帰をしています。
そこででてくるパラメータの中身をグラフに書く為に、値を取得したいと思っています。

plot(logCy5, logCy3)
reg <-lm( logCy3 ~ logCy5)
abline(reg)

ここで、Rのコンソールで、reg リターンとすると、以下の値がコンソール中に出てきます。

Call:
lm(formula = logCy3 ~ logCy5)

Coefficients:
(Intercept)       logCy5  
   -0.01426      0.22954  

これを、どうにかして変数に取得し、グラフ上に書きたいのです。

a <- XXX(reg) -変数に取得??
text(1000000, 2, labels = "a", pos=2, cex=1)

色々試してみましたが、、やり方がわかりません。
ご教授の程よろしくお願いします。

カテゴリー変数の入った非線形回帰はどうすればいいでしょうか。

伊藤 (2005-04-17 (日) 15:59:59)

お願いします。

 私は生物学の研究をしており、2種類の寄主植物上が発育期間とその後の産卵数との関係に及ぼす影響について解析しています。具体的には、横軸に発育日数をとり縦軸に産卵数をとります。この関係をそれぞれの寄主植物別で解析すると、両方とも二次関数へのあてはまりがよさそうでした。そこで次に、寄主植物の種類が二次関数のパラメータに影響しているかを評価するために、以下のモデルをたてました。
egg=a*(development)^2+b*(development)+c*host+d
hostの効果を入れたモデルとないモデルの間でAICを比較しようと思いました。

 前置きが長くなりましたが本題です。非線形のあてはめを行うときにはnlsを使うことを知っていたので、上の式を
nls(egg~a*(development)^2+b*(development)+c*host+d,start=list(a=2,b=1,c=1,d=1),data)
として解析しようとしたら、

Error in numericDeriv(form[[3]], names(ind), env) : 
        Missing value or an Infinity produced when evaluating the model

というエラーが出て止まってしまいました。"host"(寄主の種類;factor)を抜くとうまくいくので、nlsではカテゴリー変数を評価できないのかと思います。

 nlmeも試みてみましたが、ランダム因子がないので不可なようです。代案としてどういうコマンドが考えられるか、ご教唆いただければと思います。よろしくお願いします。

データのソートについて (なんでも掲示板から移動)

thorman (2005-04-16 (土) 21:51:53)

 最近Rで統計学を始めたのですが(以前はExcelを使っていました)、Rでデータのソートってできるのでしょうか。
 例えば、x<-c(1,3,4,4,6,5,2)とxにデータを入れた後、このデータを降順(あるいは昇順)にならべたりするのはできるのでしょうか。
 まだ、Rについてよく分からないのですが、C言語でデータをソートするようなプログラムを作るように、じぶんでfor構文でソートするためのプログラムを作らなければダメなのでしょうか?

クラスター解析の樹形図の作成について

ごろう (2005-04-14 (木) 13:06:21)

クラスター解析で樹形図を作成しているのですが、項目の日本語を入れたまま作図しようとするとエラーになるので、項目を削除して作図をしているのですが、そうすると図の下には数字しか表示されません。R上で図の下に表示される数字と項目を対応させる方法はあるのでしょうか?
自分の作図方法を下に示します。 よろしくお願いします。
使用OS Microsoft windows XP
R Version 2.0.0

library(cluster)
A<-read.table("gorou.txt")
A1<-A[,-1]
A.euclid<-dist(A1, method="euclid")
Euclid.complete<-hclust(A.euclid, method="complete")
plclust(Euclid.complete, hang=-1)

plotでのmain titleの指定

beginner for R (2005-04-13 (水) 16:31:53)

いくつのデータをバッチ処理によってプロット出力したいのですが、そのときに入力ファイル名をプロットのmain titleに指定したいのですが、どのようにやればいいでしょうか? 
どうぞよろしくお願いします。

関数とlistコマンドに関する質問

21℃ (2005-04-07 (木) 14:56:40)

hoge.test <- function(l="hoge") {
   list("fuga"=c("PV.IV","IV"),l=c("Yes","No"))
}
hoge.test("fugafuga")

とすると、lが評価されずに

$fuga
[1] "PV.IV" "IV"   

$l
[1] "Yes" "No" 

となります。$lが$fugafugaとなるようにするにはどうすればよいのでしょうか。print(l)を入れるとlに期待通り"fugafuga"が入っているのですが。。。

sprintf の指数表示について

初心者11242号 (2005-04-05 (火) 14:48:32)

sprint のフォーマットで e を指定したときに、R2.0.1 では e の後ろが3桁になって表記されますが、これを2桁や4桁にするには どうしたらよいのでしょうか?
現在は

>  sprintf("%8.5e", 0.0001)
[1] "1.00000e-004"

となっているのを "1.00000e-04" や "1.00000e-0004" としたいのです。
2桁の場合は formatC を使い, 4桁の場合は

sprintf("%4.2e0", 0.0001) # おかしいですね。これでは期待される結果は得られないと思いますが

などと無理やりフォーマットを変えていますが、もっと良い方法があれば教えてください。
OS は Windows XPで、R2.0.1 日本語版を使っています。

しつもん

初心者 (2005-03-31 (木) 01:48:22)

シュミレーションをしていたら以下のようなエラーが出たのですが、

Error: subscript out of bounds

ってなんでしょうか?

関数群を重ねて描画する方法について

yuta (2005-03-30 (水) 14:56:18)

以下のように複数の回帰直線を得る関数を定義したあとで、

taus <- c(0.99,0.95,0.9,0.85,0.8,0.75)
MyRq <-c(rq(y~x, tau = taus,MyData))

散布図上にその複数の関数を描画しようと思い、以下のようなスクリプトを単純に組みましたが、回帰直線が一つだけしか描画されません。恐らく上書きされてしまっているのだと思うのですが、単純に重ね合わせをするような指定の方法はあるでしょうか。お知恵をお借りしたく思います。宜しくお願いします。

plot(x,y)
new = t
abline(c(LineRq),col="blue")


トップページから記事一件移動しました

Rをインタプリタでなくバッチで実行すると何百倍も早くなったりすんでしょうか? -- 豊田 2005-03-29 (火) 08:21:06


パッケージのUPLOADでエラーがでます。

超初心者 (2005-03-28 (月) 13:27:38)

trying URL `http://cran.md.tsukuba.ac.jp/bin/windows/contrib/2.0/PACKAGES'
Error in download.file(url = paste(contriburl, "PACKAGES", sep = "/"),  : 
        cannot open URL   `http://cran.md.tsukuba.ac.jp/bin/windows/contrib/2.0/PACKAGES'
In addition: Warning message: 
unable to resolve 'cran.md.tsukuba.ac.jp'. 

package のupload をしようとすると上記エラーがでます。
IE上に直接入力するとうまくいくのに、理由がわかりません。

かなりの初心者ですが、だれかお教え願いますでしょうか????
環境:win2k

エラーが取れません。。。

初心者 (2005-03-27 (日) 16:16:20)

ファイナンスのシュミレーションをするのにRを使ってやってみたのですが、

Error in if ((800/K[i, j]) * Dil * (S[i, j] - K[i, j]) > C[i, j]) 
        missing value where TRUE/FALSE needed

と言うエラーが出てしまって困っています。
該当箇所は

       if( (800/K[i,j]) * Dil *(S[i,j] - K[i,j]) > C[i,j] ){
           C[i,j] <- (800/K[i,j]) * Dil *(S[i,j] - K[i,j])
          }

と言うもので、K, Dil, S,C などのオブジェクトは全て前に定義しています。
この部分のどこかにまずいところがあるでしょうか?
教えてください、よろしくお願いします。

windowsユーザーです。

R for Mac mini

future user of Mac mini (2005-03-16 (水) 19:28:26)

 R Mac 版はMac mini (メモリー256MB/HDD 40GB)でも、問題なく動作するのでしょうか?

線分の色分け

さち (2005-03-16 (水) 16:14:04)

またお世話になります。以前”射影した回帰曲線の色の付け方”でお世話になった、さちです。またご指導をよろしくお願いします。
前回の質問から時間が経ってしまいましたので、新しく質問をたてることにしました。

青木さんのご指導をもとに、フォーミュラ y= f(x) の逆関数 x=g(y) によって,x1=g(a), x2=g(b) を計算して lines(c(x1, x2), c(0,0), col="color you want")で線分の色分けを行おうとしました。
フォーミュラ y= f(x) の逆関数 :

a=50;b=20;c=0.1
g<-function(d) (-(1/c)*log( (a-y)/(b*y) ))
x2<-c(g(y))

このようにして、逆関数 x=g(y) を求めて、下記のようにして、線分を描かせてみましたところ、、、

X<-matrix(0,20:3)
X[,1]<-x<-1:20
X[,2]<-x2
<-matrix(0,20:1)

for(i in 2:20) {
 lines(c(X[(i-1),1],X[i,2]), c(Y[i,1],Y[i,1]),
        col = ifelse( predict.c>= 15.1, "blue", 
                      ifelse( predict.c>= 10.1, "green", "red")))
   }

困った事に、得られた線分が、単色(”赤”)になってしまいました。。。
どうしたら良いのでしょうか。
ご指導をお願いします。

Warning message

初心者 (2005-03-16 (水) 15:17:13)

Excelの表をread.csvで読み込もうとしたら以下のメッセージが出たのですが、どうしたらよいのでしょう?なお、Rは2.01、Mac OS X環境です。
incomplete final line found by readTableHeader on `Data.csv'

軸を指定したい

nama (2005-03-16 (水) 12:21:56)

すみません。教えていただきたい事があります。
散布図X軸を打点があるところだけにしたいのですがどうすればいい
のでしょうか? xaxt="n" で消去することは出来たのですが、その後
3点のみ表示させたいのです。よろしくお願いいたします。

              *            
   *
                            *
---+----+----+----+----+----+----
 40        60             90

変化率の計算

おさる (2005-03-14 (月) 02:25:43)

お世話になります.

変化率の計算方法で,うまいものは無いでしょうか.

変化率2= (x[2]-x[1])/x[1]
変化率3= (x[3]-x[2])/x[2]

といった感じの計算を,データフレームの変数xの各行に対して(簡単スマートに)行いたいのですが...
例えば,次のような株価のデータがあるとき,

x       y       z
905     728     589
950     773     597
930     737     580
960     770     606
1080    845     688
1030    808     669
965     733     687
992     759     691
956     745     702

これら企業の株価それぞれについて,上記のような変化率を求めたいのです.これらのデータは,データフレームに入っておりまして,できれば新たなデータフレームを作成できれば良いなぁと思っています.forを使ってある程度のことはできるのですが,いまひとつ爽快感が得られません. -- おさる 2005-03-14 (月) 03:10:36

Tukeyで比率の統計をしたいのです

ピンバッジ (2005-03-09 (水) 18:02:31)

全く何も分からないので何を書いていいのかも分からないのですが、異なる餌を与えた昆虫の生存率の比較を、RのTukeyで統計しました。しかし、比率を比べる場合はカイ二乗検定後、角変換(アークサイン変換)をした後にTukeyをしなければならないことを知りましたが、この一連の操作をRでどのようにやるかわかりません。また、どういった形のデーターで比較するかもわかりません。
本当にわからないことばかりですので、お手数ですができる限り詳しく教えていただけると有 難く思います。足りない情報がありましたら教えてください。

ESS-5.2.5で補完機能が効かない

ぶー (2005-03-08 (火) 16:28:53)

こちらに書き込むのはまずいでしょうか?
Rを使うのにESSから使用しているんですが、ESS-5.2.5だと、source や read.table の補完機能が効きません。ESS-5.2.3だとOK。
elisp を見ていないのでなんなんですが、、、同じ現象で回避されている方がいらっしゃいましたらご指導願えないでしょうか?
あ、LInux 2.4.7 で使用しています。

重回帰式の変数選択の方法

石川誠 (2005-03-06 (日) 20:43:09)

お世話になります。
重回帰式を作成するとき、有効な変数を選択する方法を教えて下さい。
総当り法はあったのですが、変数が多いと時間がかかってしまいます。

射影した回帰曲線の色の付け方

さち (2005-03-02 (水) 15:37:36)

Rの初心者です。
方々探したのですが、こんなことはあまりされていないのか、それとも、探し方が悪いのか、ヒントになりそうなものも見つかりませんでしたので、こちらに投稿させて頂きました。分かりにくい文章ですみませんが、どなたか、教えてください。

> f <-function(x) 20/(1+50*exp(-0.8*x))
> x<-1:20
> y<-f(jitter(x))
> (result <-nls(y~a/(1+b*exp(-c*x)), start=c(a=50,b=20,c=0.1)) )
Nonlinear regression model
  model:  y ~ a/(1 + b * exp(-c * x)) 
   data:  parent.frame() 
        a         b         c 
20.039274 51.908061  0.788543 
 residual sum-of-squares:  0.3331449 
> predict.c<-predict(result)
> plot(x,y,ann=F,xlim=c(0,20),ylim=c(0,20))
> par(new=T)
> plot(predict.c,type="l",xlim=c(0,20),ylim=c(0,20))

この回帰曲線をx軸に射影(投影)したものに、yの値に従って、色を付けることを考えています。
例えば、

 y=0.0 ~10.0  赤
 y=10.1~15.0  黄色
 y=15.1~20.0  青

のように。collor.paretsにあるheat.colorsのようなもので色づけができたら、とてもうれしいです。
どうかよろしくお願いします。

多項式による回帰分析

highvalley (2005-03-01 (火) 19:05:38)

Rを勉強中のhighvalleyと申します。
現在多項式による回帰分析(最小2乗法)を行いたいのですが、皆さんはどのように行っていますでしょうか?
私はlm()を使って以下のように行っています。例えば目的変数をy、説明変数をxとして2次の多項式で回帰分析をする場合は、

result <- lm( y ~ 1+x+I(x^2) )

これで目的を達する事は出来ているのですが、この方法だと次数が多くなると大変です。もう少しスマートな方法があるような気がして、質問を致しました。良い方法をご存知でしたら教えて下さい。よろしくお願いします。

関数の追加

しま (2005-02-20 (日) 15:29:58)

新しい関数を追加したいのですが,どのようにすればいいのでしょうか?
初歩的な質問で申し訳ないです..

levelplotの背景色の変更

ひょうひょう (2005-02-10 (木) 18:48:00)

グラフィックス参考実例集:ラティスグラフィックスで以下のような説明がありますが、具体的に教えてください。
「lattice 関数は lightgrey の背景色等幾つかの固有の既定値を採用しているので、必要に応じ par 関数で変更する。」
par(bg="white")
としても変更できませんでした。よろしくお願いします。

Error cannot allocate ..というエラーがいつも出てしまいます

ちょろちゃん(;_;) (2005-02-04 (金) 09:34:32)

みなさま始めまして、R超初心者のちょろと申します。
初心者のため、ご相談内容にも説明不足の点もあるかと思います。
その際はご指摘ください。

□相談内容

Windowsで動くRスクリプトがLinux上で稼動すると
エラーが出てしまう。

□Rのエラー内容
Error: cannot allocate vector of size 16478 Kb
Execution halted

vector of size ○○○。。。というサイズは
32MBの場合もありますし、上記のように16MBの場合もあります

□実行環境
(スクリプトが動く環境)
OS:Windows 2000
Memory:512MB
R:1.9.1
(スクリプトが動かない環境)
OS:Linux Redhat 7
Memory:2GB
R:1.9.0

WindowsとLinuxでは、Rを動かす際のメモリーのとり方など
違いがあるのでしょうか。
このようなエラーが出てしまうのはRのスクリプトの書き方が
悪い以外のなにものでもないような気がいたしますが、
何かお気づきの点等ございましたら、アドバイスいただければ幸いです。
どうぞよろしくお願いいたします。

Rで分割表の対数線形モデル

bob3 (2005-01-31 (月) 00:03:57)

 bob3と申します。

 Rを使った対数線形モデル(log-linear models)による分割表(クロス集計表)の分析をしようとしています。
 ところが2点ほど不明な部分があり、ご相談にあがりました。
ご相談したいのは以下の2点です。

 1)ANOVAコーディングよる対数線形モデルのやり方
 2)関数loglinによる「特定の単一の変数の主効果と誤差のみ」を認めるモデル、および「誤差のみ」を認めるモデルの指定の仕方。

 例題として http://www.sci.kagoshima-u.ac.jp/~ebsa/matsuda01/pdf/ch03-01.pdf の表3.2「ロケットの発射試験」を使っています。この例題の飽和モデルによる推定値は http://www.sci.kagoshima-u.ac.jp/~ebsa/matsuda01/pdf/ch03-04.pdf の表3.11にダミーコーディング、表3.12にANOVAコーディングで掲載されています。

 まず、Rによる対数線形モデルの手順を調べ、以下のようにしてみました。(長くなるので出力は省略しています。)

# 既存の分割表を入力
rocket <- array(data=c(5,7,8,9,3,21,7,9,6), dim=c(3,3))
dimnames(rocket) <- list(c("A1","A2","A3"),c("B1","B2","B3"))

# モデル選択
model0 <- loglin(rocket, list(c(1, 2)), param=TRUE)
model1 <- loglin(rocket, list(1, 2), param=TRUE)
model0
model1
p0 <- 1-pchisq(model0$lrt, model0$df)
p1 <- 1-pchisq(model1$lrt, model1$df)
p0
p1
AIC0 <- model0$pearson-2*model0$df
AIC1 <- model1$pearson-2*model1$df
AIC0
AIC1

# ここでは飽和モデルを採用し分析してみる
rocket.df <- as.data.frame.table(rocket)
colnames(rocket.df) <- c("航続距離","横方向のずれ","度数")
glm0 <- glm(度数 ~ 航続距離 * 横方向のずれ, data = rocket.df, family = poisson)
anova(glm0, test = "F")
summary(glm0)


 ところが、これで出力されるのはダミーコーディングによる推定のみです。

 ANOVAコーディングによる推定値を得るにはどのようにすればよいのでしょうか。

 また、関数loglinでモデルを指定する際、[AB]と[A][B]というモデルについては問題ないのですが、[A]のみ、[B]のみ、[ ]のみ(誤差のみ)のモデルについてはどのように指定すればよいのでしょうか。

 なお、環境は

> version
         _              
platform i386-pc-mingw32
arch     i386           
os       mingw32        
system   i386, mingw32  
status                  
major    2              
minor    0.1            
year     2004           
month    11             
day      15             
language R  

と、なっております。

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

 参考にしている文献ですが、これも実は私のほうが教えていただきたいぐらい で、「質的情報の多変量解析」http://www.sci.kagoshima-u.ac.jp/~ebsa/matsuda01/index.htmlぐらいしかありません

 Rでの対数線型モデルについてということでは、主に以下の文書を参考にしています。

http://www.ci.tuwien.ac.at/~zeileis/teaching/Biostatistics03/examples4.pdf

http://www.stat.ohio-state.edu/~tjs/865/handout-3.pdf -- bob3 2005-02-07 (月) 00:14:15

Rでメタアナリシス

竹内 (2005-01-30 (日) 09:06:30)

Rでメタアナリシスを行いたいのですが、どなたか参考になるもの(教科書、webなど)をご存知でしょうか?google、amazonなどで一応探してはみましたが、「これ」というものがみつかりませんでした。英語のものやS言語のものでも結構ですのでどなたかご存知のかた、よろしくお願いいたします。

n×nマトリックス状にplotを配列する方法

kejuyan (2005-01-26 (水) 17:28:06)
昨日は、大変有益なアドバイスを頂きました。ありがとうございました。
今日は、例えば、2列のデータX00Y00からX19Y19までのデータをプロットし,20×20のマトリックス状に配置したいと考えております。
2×2のマトリックスであれば,以下のようにも書くものです。

par(mfrow=c(2,2))
par(mar=c(0,0,0,0))
plot(y~x,X00Y00)
plot(y~x,X00Y01)
plot(y~x,X01Y00)
plot(y~x,X01Y01) 

昨日教えていただいたプログラムをアレンジして,以下のプログラムを作成しました。

par(mfrow=c(20,20))
par(mar = c(0, 0, 0, 0))
for (i in 0:19) {
    if (i < 10) I <- paste("0",i,sep="")  else I <- as.character(i)
       for (j in 0:19) {
       if (j < 10) J <- paste("0",j,sep="")  else J <- as.character(j)
       oname <- paste(“X”,I,”Y”,J, sep="")
      y <- paste(“	Y_”,oname)
      x <- paste(“X_”,oname)
      plot(y~x, oname, col="red",lty=1, type="l",axes=FALSE, frame = TRUE)~
    }
 }

しかし,

Error in eval(expr, envir, enclos) : invalid second argument

というエラーが出てきました。
そこで、xの中身を調べてみたら,以下のように ”(二重引用符)が付いていました。

> x
[1] "I_ X00Y00"

なので、この " を無くしてやれば動作するのではと考えているのですが、" の取りかたが分かりませんでした。
" の取り方、またはより良い方法をご存知の方、御教授よろしくお願いします。

複数ファイルの一括読み込み

kejuyan (2005-01-25 (火) 15:09:18)

座標(x,y)で得られたn行2列データファイルX00Y00.csv〜X50Y50.csv【X00Y00は(x,y)=(0,0)でのデータ】があります。

1つのファイルであれば以下のようにX_<ファイル名>,Y_<ファイル名>の形式で読み込むことが出来ました。
これを多数のファイルで一括読み込みしたい場合はどのようにしたらよろしいでしょうか?

> X00Y00 <- read.csv("C:/X00Y00.csv")
> X00Y00
    X  Y
1   1  2
2   2  4
3   3  6
4   4  8
5   5 10
6   6 12
7   7 14
8   8 16
9   9 18
10 10 20
> colnames(X00Y00) <- c("X_X00Y00","I_X00Y00")
> X00Y00
   X_X00Y00 I_X00Y00
1         1        2
2         2        4
3         3        6
4         4        8
5         5       10
6         6       12
7         7       14
8         8       16
9         9       18
10       10       20

forなどを使えば出来そうかとは思うのですが、プログラム経験も乏しいので良く分かりませんでした。
どなたか御教授よろしくお願いします。
また、参考URL or 文献なども教えていただけるとうれしいです。

関数を上書きしてしまった?

初心者 (2005-01-17 (月) 20:18:02)

どうも以前にgamma関数を上書き定義してしまったらしく、使えなくなってしまいました。一度Rを閉じても元に戻りません。初期定義に戻すにはどうすればいいでしょうか。

分割表形式のデータフレームを通常のデータ形式に戻したい

Jack (2005-01-16 (日) 17:00:47)

次のようなデータフレームがあります。
V1, V2は処理の種類(カテゴリー)を表し、1,2,3,4,5は計測値1〜5(間隔尺度)の頻度(個数)を表しています。

V1 V2 1 2 3 4 5
1   1    1 3 1 0 2
1   2    3 1 4 5 5
2   1    2 1 9 8 7
2   2    1 0 8 8 1

解析に際し、これを生データに戻したいのです。つまり

V1 V2 V3
1    1    1
1    1    2
1    1    2
1    1    2
1    1    3
1    1    5
1    1    5
1    2    1
1    2    1
1    2    1
1    2    2
.
.

というようにです。
 forループを使えばできそうな気がしたのですが、肝心の計測値を抽出するところや、抽出した値をどう反映させればいいのかわかりませんでした。
 あるいは、forを使わない方法があるのでしょうか。  よろしくおねがいします。

shapefileが読めません。

おやじっち (2005-01-12 (水) 00:35:36)

spdepでmoran's Iを計算しようと思い、vectorworksで作成したファイルをdxf形式になおし、ArcMAPで読み込んだものをshp形式で取り出しました。その際属性でデータを入れました。
Rでmaptools,spdep,tripackをロードし

x <-  read.shape(system.file("shapes/ファイル名.shp",  package="maptools")[1])

と入力しましたが

Error in read.shape(system.file("shapes/ファイル名.shp", package = "maptools")[1]) : ~
	unable to open file

と表示され読めませんでした。
http://web.sfc.keio.ac.jp/~maunz/
のサイトの
R language/空間重み付け行列とMoran’s I
の部分を参照したのですが、なにぶん素人なものでどこが間違っているのかよく分かりません。
どうか教えて下さい。

Windows版Excelからのセル範囲コピー

青木繁伸 (2005-01-11 (火) 14:32:44)

Windows ユーザから以前,
http://aoki2.si.gunma-u.ac.jp/R/excel.html
の動きがおかしいという問い合わせがありました。
複数列をコピーしてもなぜか一行中の全部の数字を連結した文字列になる(タブで区切られない)ので,書かれているような動きをしないということでした。その人は1.9でやっているからでしょうかと言っておりましたが,今日たまたまWindows版のRをさわっていて2.0.1でもちゃんと期待通り動かないことが分かりました。
なんででしょうか。
エディタなどにペーストすると列の間にはちゃんとタブコードが入っているのですが。

Xでない環境でpng()やjpeg()を使いたい

はいじま (2005-01-10 (月) 23:33:31)

LinuxでXの無い環境で、ver2.0.0を使っています。
R Bookを読みつついろいろ試していますが、 Windows上ではpng()が利用できるのですが、 Linuxで、コマンドラインからRを実行するとエラーが出ます。
Xはインストールされていないサーバーなのですが、 この場合、画像ファイルの作成はどのように行うのでしょうか。
それとも行えないのでしょうか。

src-----------------------------
x<-1:100
y<-sin(x)
png('/tmp/sin.png')
plot(x,y)
dev.off()
src-----------------------------
err-----------------------------
Error in X11(paste("png::", filename, sep = ""), width, height, pointsize,  :
        unable to start device PNG
In addition: Warning message:
unable to open connection to X11 display`'
err-----------------------------

パッケージfSeriesのaparchSimについて

winga (2005-01-05 (水) 20:57:16)

windowsXPでR2.0.1を使用しているものです。パッケージfSeriesでaparch分析をしようとしています。aparchSimというコマンドでシミュレーションを行っているのですが、出力された結果には負の値が含まれてしまうことが良く分かりません。aparchSimは自分で設定したパラメータをもとに将来の条件付標準偏差を求めていると思うのですが、この値が負になることはないと思うのですが・・・。help(aparchFit)を読んでも書いていないので、どなたか分かる方がいらっしゃったら教えていただければと思います。

ブラウザーに関する質問二件

QDU (2005-01-04 (火) 08:13:30)

R とは直接関係ありませんが、RjpWiki を見るブラウザーについて前から困っていることがあります。Mozilla で見ると半角英数字が空白になることがある。例えば、このページのトップ見出し中の 「R」が消えてしまいます。一方「RjpWiki」は問題無く表示されています。しかたなしにいつも Konqueror で見ていますが、このページ(だけ)が左右の欄が一部重なりあって見にくくなります(一方 Mozilla では問題無し)。何か解決のヒントをご存知の方いらっしゃいませんか。使用環境は Linux (Knoppix 3.6) です。

自前のカラーバーを作る方法

ゆき (2005-01-03 (月) 18:17:22)

自前でカラーバーを作りたいのですが、どうすればよいの困り果てています。

例えば、グラフィックス参考事例集にある火山の地形図のイメージでは、

image2 <- function () {
  data(volcano)
  x <- 10*(1:nrow(volcano))
  y <- 10*(1:ncol(volcano))
  png("image2.png")   # png デバイスを開く
  # 地形図色調で色分けしてイメージ表示
  image(x, y, volcano, col = terrain.colors(100), axes = FALSE)
  # 等高線を重ねる
  contour(x, y, volcano, levels = seq(90, 200, by=5), add = TRUE, col = "peru")
  # 下部に軸、チックマークを描く
  axis(1, at = seq(100, 800, by = 100))
  # 左部に軸、チックマークを描く
  axis(2, at = seq(100, 600, by = 100))
  # 全体を囲む枠を描く
  box()
  # タイトル
  title(main = "Maunga Whau Volcano", font.main = 4)
  dev.off()            # デバイスを閉じる
}

として、 terrain.colors を使用して色をつけていますが、これを、50Mや100M間隔で色を自分で割り振って、色付けを行いたいのですが、どうすれば良いのでしょうか。

ExcelのRight、Leftみたいな機能

Akira (2004-12-27 (月) 10:38:26)

Excelには文字列の右端、左端を得る関数があります。
 "abcd"なら、right("abcd", 1) -> "d" となります。
Rには

strsplit("abcd", split="")[[1]][4]

とか
文字数が不明な場合は

lapply(strsplit("abcd", split=""), rev)[[1]][1]

で文字を得られますが、
文字ベクトルの全ての要素に適用して、listでなく右端の文字だけのベクトルを得る方法はあるのでしょうか?

chara.a <- c("abcd", "bcda", "cdab")
chara.list <- lapply(strsplit(chara.a, split=""), rev)
chara.b <- numeric(0)
for(i in 1:length(chara.list)){
chara.b[i] <- chara.list[[i]][1]
}

でベクトルを作っています。

R的なapply, lapply, sapplyの活用

Akira (2004-12-27 (月) 10:24:04)

「意味がある時は(ない時も)常にベクトル化せよ」を実践すべく頑張ってますが、困っています。次の処理はforを使わずにできますでしょうか?

a.listとb.listがあります。a.listはnumericデータのdata.frameをlistでまとめ、b.listはa.listのdata.frameを2つに分類するためのnumericベクトル組をlistでまとめています。
つまり、

length(a.list)=3
dim(a.list[[1]])
[1]20 200(これは[[2]]、[[3]]も同じ)

length(b.list)=2
b.list[[1]]
$g1
[1]1 2 3 4 5 6 7 8 9 10 11 12
$g2
[1]13 14 15 16 17 18 19 20
b.list[[2]]
$g1
[1]1 2 3 4 5 6 7 8 9 10
$g2
[2] 11 12 13 14 15 16 17 18 19 20

今このデータについて、b.listにある2つのカテゴリを使って、a.listの3つのdata.frameをそれぞれ2群検定したいと思っています。
今は、

for(i in 1:length(b.list)){
for(j in 1:length(a.list){
g1 <- a.list[[j]][b.list[i], ]
g2 <- a.list[[j]][b.list[i], ]
ttest.p <- numeric(0)
for(k in 1:dim(a.list[[1]])[2]){
ttest.p[k] <- t.test(g1, g2, var.equal=T, alternative="two.sided",
                     na.action=na.omit)$p.value
}}}

の様なことをしてしまっています。
せめて、apply(g1, 2, t.test, g2)みたいな方法でg1とg2のcol毎にt.testをしてP値だけを得る方法はあるのでしょうか?

プロットの3色の色分け

Mari (2004-12-21 (火) 18:09:28)

何度も本当にすみません。。。
プロット上のスポットを値ごとに3色に分けたいのですが、以下のスクリプトではだめなようでした。

> plot(A2,M2,col = (if(Type==1){"gray"}else if(Type==-20000) {"blue"} else "black"))
Warning message: 
the condition has length > 1 and only the first element will be used in: if (Type == 1) { 

col をif文の中に入れてみたりしたのですが、plotではifelseしか使えないのでしょうか?

プロットの色分け

Mari (2004-12-21 (火) 16:54:14)

いつもお世話になっております。今回はプロットを作成して、色分けを行いたいと思っております。

インポートしたデータフレーム(dat2)のA2,M2 というカラムの値を使って、プロットを書くのですが、それぞれにControlType というものが数値として入っており、これごとに色を変えたいと思っております。

> unique(dat2$ControlType)
[1]      1 -20000      0

とりあえず、2色でifelseをプロット関数に入れて行ってみましたが、エラーがでました。

> plot(A2,M2, col = ifelse(dat2$ControlType=0,"gray","blue"))
Error: syntax error

別の関数に変換するほうがよいのかなと思い、下記のようにしましたが、
やはりエラーがでました。

> Type <- dat2$ControlType
> unique(Type)
[1]      1 -20000      0
> plot(A2,M2, col = ifelse(Type=0,"gray","blue"))
Error in ifelse(Type = 0, "gray", "blue") : 
        unused argument(s) (Type ...)

某HPの以下のスクリプトを参考にしたのですが、何が悪かったのでしょうか?

>  plot(x, y, col = ifelse(y>0.5, "red", "blue"))

read.table で最初の9行をスキップしたい

Mari (2004-12-21 (火) 11:09:47)

エクセルで作成したデータのインポートを行いたいのですが、1行目から9行目までがコメントになっており、10行目からのインポートを行うために、
read.table のオプションのskip を使ったのですが、下記のようなエラーが返ってきました。

具体的には、下記のように行いました。どうやら、1行目のデータ数と、10行目以降のデータ数の違いによるもののようですが、どのようにすればよいでしょうか?

データは1行目から9行目まではランダムなコメントが書いてあり、10行目がヘッダー、11行目からが実データになります。 11行目のデータは87列ほどのデータですが、1行目には50列ほどしかコメントで使用されていません。

アドバイスいただけますと助かります。よろしくお願いいたします。

> dat<- read.table("Test.txt",skip=9)
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  : 
        line 1 did not have 87 elements

条件にあうものだけに、値を変更したい。

cricket (2004-12-18 (土) 00:14:58)

データフレームで、あるラベルに対応する値だけを変更するにはどうすればいいのでしょうか。たとえば、data$treatmentが"control"の場合だけに、data$observationに10を加えたいのです。初歩的なことだと思いますが、よろしくお願いします。

単位根検定についてpart2

nakanaka (2004-12-17 (金) 19:31:57)

他の計量経済学の掲示板にも質問させていただきましたが,なかなかレスがないようなのでここでも質問させてください.現在,単位根検定のADF検定をパッケージ”fSeries”で行っているのですが,トレンド項,ドリフト項の取捨に困ってます.
トレンド項,ドリフト項のt(τ)値を見れば,有意かどうか判断できると思うのですが,”R”では,それらの推計式が示されない(つまり,トレンド項,ドリフト項のt値が見れない)ので推計モデルにトレンド項やドリフト項を含んでいいのかどうかがわかりません.このような場合どういう風に推計式を選択すればよいのでしょうか?fSeriesのマニュアルを見てもこの推計式の選択についての検定は書かれてなかったように思われます.推計式のトレンド項,ドリフト項のt値を見る方法,もしくは,他の解決策があれば教えていただけると幸いです.
よろしくお願いします.

テーブル内のリスト一覧

Mari (2004-12-17 (金) 16:48:30)

テーブルを読み込んだときに、そのデータのリストの一覧を入手するような関数ってあるのでしょうか?
例えば、Test というデータのカラムに

Column
-------
type1
type3
type2
type1
type3


というような項目があり、このデータが何万件にも及ぶ場合、
何種類のtype があるか、という情報を入手したいのですが。。

show(Test$Column)
ですと、ただ一覧がでてきてしまいます。

調べ方も甘いのかもしれませんが、ご教授いただけますと
幸いです。

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

正準相関係数に関して

fuji (2004-12-14 (火) 13:51:37)

正準相関係数に関して質問です.
cancor()関数では正準相関係数は出力されますが,重み係数は出力されないのでしょうか?

VECMのパラメータについて

Yo (2004-12-13 (月) 17:37:37)

VECMのパラメータ推計を,パッケージ"urca"の"ca.jo"で行っているのですが,出力された値のうちどれがどの式(長期均衡式・EC式・階差式)に対応したパラメータなのかわからずに困っています.
"ca.jo-class"の説明を見て"PI""GAMMA"が

EC式:EC=Y(t)-(a0+a1*X(t-1)+a2*Z(t-1)+..)

のパラメータだろうと思っているのですが,

VECM:?Y(t)=b0+b1*EC(t-1)+b2*Y(t-1)+b3*X(t-2)+..

のパラメータがどれにあたるのかわかりません.
とても初歩的な質問で申し訳ありませんが,教えていただけないでしょうか?
よろしくお願いいたします.

カテゴリーごとのプロット

shiGe (2004-12-13 (月) 07:28:32)

アメリカ50州のデータに関して,それぞれの州の2変量OLSフィットの図(つまり全州において同じ2変量間の散布図及び回帰直線)を1つの図にまとめて描きたい(50個の図が並ぶ)のですが,plot()に関する情報を検索しても,分かりませんでした(というよりどのように検索すべきかもいまひとつ分からないのですが)。

仕方ないので当てずっぽうで

plot(Y ~ X, data=hoge, for=STATE)

や,for=STATEの部分をby=STATEなどに代えてやっても当然のようにエラーになります。ご存知の方がいらっしゃいましたらご教示いただけますでしょうか。


添付ファイル: filenls.png 3223件 [詳細] fileVolcano1.png 3254件 [詳細] fileVolcano2.png 3295件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-25 (土) 11:19:17