No.07724 Rの以前のバージョンのインスト  【R初心者】 2008/09/24(Wed) 13:37

Rの以前のバージョンだったら,うまくいった自作ソースがあるのですが,以前のバージョンをインストールするのは,どうするのでしょうか?

No.07726 Re: Rの以前のバージョンのインスト  【青木繁伸】 2008/09/24(Wed) 13:47

Windowsですか?OSの種類バージョンは?

インストール中に,「インストール先の指定」というステップがありますが,ご存じないですか?

No.07727 Re: Rの以前のバージョンのインスト  【R初心者】 2008/09/24(Wed) 14:05

途中で,以前のバージョンがありました。
arrows命令他で,最新のバージョンのRで,エラーになり,以前のでは,エラーになりません。

No.07728 Re: Rの以前のバージョンのインスト  【青木繁伸】 2008/09/24(Wed) 15:09

> 途中で,以前のバージョンがありました。

どういう意味でしょう?
たとえば,私の場合 D:\ にインストールするように指定してちゃんとできましたけど。
XP ですけどね。

> arrows命令他で,最新のバージョンのRで,エラーになり,以前のでは,エラーになりません。

古いバージョンを別途インストールして,古いRで動かそうとするより,プログラムのエラーに対処する方が,良いと思いますよ。

No.07730 Re: Rの以前のバージョンのインスト  【R初心者】 2008/09/24(Wed) 17:02

以下のようですが,以前の2.5.1ではエラーになりません。動作が,新しい2.7.1では,グラフィック画面が,ソースのコピー時に動作するという違いです。環境設定か何かが,違うのでしょうか?
下のaは,excelの範囲指定して,クリップボードをコピーした相手です。
> grafdm<-function(a)
+ {
+ # 2008/2/8
+ x <- a[[1]]
+ y <- a[[2]]
+ uy <- a[[3]]
+ ly <- a[[4]]
+ z1<- a[[5]]
+ z2<-a[[6]]
+ min<-c(-3) #min(ly,z1,z2)
+ max<-c(4) #max(uy,z1,z2)
+ Pex<-c(1)
+ ########################
+ png(‘test.png ’,width=600,height=400)
> plot(x,y,type=”b”,xlim=range(0,90),ylim=range(min,max),col=1,lwd=1,
+ pch=19,cex=Pex, xlab="", ylab="", lab=c(19,8,3),las=1)
> arrows(x,uy,x,ly,length=.05,angle=90,code=3)
以下にエラー arrows(x, uy, x, ly, length = 0.05, angle = 90, code = 3) :
オブジェクト "x" は存在しません
> par(new=TRUE)
Warning message:
In par(new = TRUE) : プロットなしで par(new=TRUE) を呼び出しました

No.07731 Re: Rの以前のバージョンのインスト  【青木繁伸】 2008/09/24(Wed) 17:47

この状態では,追試できませんね。
他の人も,Rコンソールにコピーアンドペーストで同じエラーが出せるように用意しないと,プログラムを呈示する意味がないです。

No. 7713 以降のスレッドも参照してみてください。

それに,このプログラムの断片,1行目で始まった関数定義はどこで終わっているのですか。png 関数を呼び出す行までは関数定義が続いている(先頭文字が + ゆえ)が,次の plot 関数のところで先頭文字が > になっている。おかしいなあ。
コンソールからコピーアンドペーストしてないのですか。インデントもむちゃくちゃだし。。。

「a は,excelの範囲指定して,クリップボードをコピーした相手です」というのも,若干意味不明。a に クリップボードをコピーするなんて,できないでしょう?クリップボードから scan したのですか,read.table したのですか。どのような内容なんでしょうかね。これも,大きなデータでないのなら,> a としたときの出力を添付するなりしてくれないと,なにがなんやらわかりません。まあ,a[[1]] のように引用しているのだから,データフレームなんだろうなということしかわかりませんね。

とにかく,この状態では,何のコメントもできません。

ついでに,「グラフィック画面が,ソースのコピー時に動作するという違いです」とはどういうことですか。まるで通じませんね。

プログラムのデバッグではないですが,プログラムの書き方のおかしいところをいくつか指摘しておきます(直接のエラーではないが,塵も積もれば山となるで,ちょっとしたおかしな点も修正しておく方がよいでしょう)。

Pex<-c(1) は,要するにスカラーを付値しているのですね。c 関数を使う必要はありません。Pex <- 1 でよいです。
xlim=range(0,90) のような指定はしません。xlim=c(0, 90) です。なぜ,range 関数を使おうと思ったのかなあ。図の範囲だから range と思ったのでしょうかね。オンラインヘルプなどを見ると良いと思いますよ。
min<-c(-3) #min(ly,z1,z2) なども,直接ある数値を付値する(決めうちする)のはよくないですよ。min <- min(ly,z1,z2) とする方がよいし,もし,min(ly,z1,z2) が望ましい値を与えないのなら,min(ly,z1,z2) を変えるべきです(数値にではなく)

No.07744 Re: Rの以前のバージョンのインスト  【R初心者】 2008/09/25(Thu) 09:20

1.EXCEL で,以下のデータを範囲選択し
	ACIRDY	ACIRDY-1.96SE	ACIRDY+1.96SE	ACIRDY2	ACIRDY3
5 0.004714998 -0.002312483 0.011742479 0.004714998 0.004714998
10 -0.004565192 -0.010227477 0.001097092 -0.004565192 -0.004565192
15 0.016973694 0.002964614 0.030982774 0.016973694 0.016973694
20 0.074808707 0.051458393 0.098159021 0.074808707 0.074808707
25 0.119381474 0.095960777 0.14280217 0.119381474 0.119381474
30 0.198879869 0.158479137 0.2392806 0.198879869 0.198879869
35 0.336568985 0.266134591 0.407003378 0.336568985 0.336568985
40 0.424432243 0.310673143 0.538191343 0.424432243 0.424432243
45 0.96737364 0.788051188 1.146696091 0.96737364 0.96737364
50 1.576820025 1.287012116 1.866627934 1.576820025 1.576820025
55 1.935460409 1.562752582 2.308168236 1.935460409 1.935460409
60 3.001242184 2.378124211 3.624360156 3.101490875 3.149512839
65 1.630876211 0.905461843 2.356290578 1.840383192 1.913671535
70 1.919366149 1.014228164 2.824504133 2.302291229 2.408187638
75 0.814384211 -0.015056747 1.643825169 1.354602595 1.504130731
80 -0.660391488 -1.410617549 0.089834574 0.752890162 1.03601957
85 -1.818394516 -2.568315271 -1.068473761 -0.783524194 -0.525001507
2.Rで,a<-read.delim("clipboard")
で読ませて,
grafdm<-function(a)
{
# 2008/2/8
x <- a[1]
y <- a[2]
uy <- a[3]
ly <- a[4]
z1<- a[5]
z2<-a[6]
#######################
x <- x[[1]]
y <- y[[1]]
uy <- uy[[1]]
ly <- ly[[1]]
z1<-z1[[1]]
z2<-z2[[1]]
min<-c(-3) #min(ly,z1,z2)
max<-c(4) #max(uy,z1,z2)
Pex<-c(1)
########################
png(‘test.png ’,width=600,height=400)
plot(x,y,type=”b”,xlim=range(0,90),ylim=range(min,max),col=1,lwd=1,
pch=19,cex=Pex, xlab="", ylab="", lab=c(19,8,3),las=1)
arrows(x,uy,x,ly,length=.05,angle=90,code=3)
par(new=TRUE)
plot(x,z1, type="l",lty=2, xlim=range(0,90),ylim=range(min,max),col=1,pch=1,lwd=1,cex=Pex,
xlab="", ylab="", lab=c(19,8,3),las=1)
par(new=TRUE)
plot(x,z2, type="l",lty=6, xlim=range(0,90),ylim=range(min,max),pch=1,col=1,lwd=1,cex=Pex, xlab="",
ylab="", lab=c(19,8,3),las=1)
abline(h =c(-3,-2,-1,0,1,2,3,4), v = c(5,15,25,35,45,55,65,75,85),col = 1,
lty=3)
##par(xaxp = c(5,15,25,35,45,55,65,75,85),yaxp=c(-0.015,0.02,8), new=TRUE)
dev.off()
}
のコピーで,グラフ作成するものです。動けばいいので,細かな部分は,おっしゃる通りです。R.2.7.1でエラーで。R.2.5.1では動きます。

No.07748 Re: Rの以前のバージョンのインスト  【青木繁伸】 2008/09/25(Thu) 10:53

私の環境では動きましたけど。
Mac OS X 10.5.5, R 2.7.2

ただ,Excel から切り取ったデータの1列目のデータに名前が付いていないので,私の環境では5列しかないデータフレームと見られてしまうので,1列目に名前を付けて読み込みました。(註:read.delim なら,元のままでちゃんと読めた)
> grafdm(a)
以下にエラー `[.data.frame`(a, 6) : undefined columns selected
> a
ACIRDY ACIRDY.1.96SE ACIRDY.1.96SE.1 ACIRDY2 ACIRDY3
5 0.004714998 -0.002312483 0.011742479 0.004714998 0.004714998
10 -0.004565192 -0.010227477 0.001097092 -0.004565192 -0.004565192
以下略
> b
x ACIRDY ACIRDY.1.96SE ACIRDY.1.96SE.1 ACIRDY2 ACIRDY3
1 5 0.004714998 -0.002312483 0.011742479 0.004714998 0.004714998
2 10 -0.004565192 -0.010227477 0.001097092 -0.004565192 -0.004565192
以下略
grafdm(b)で,以下のような図が描かれますが,これでよいのでしょうか?


No.07750 Re: Rの以前のバージョンのインスト  【青木繁伸】 2008/09/25(Thu) 11:20

Windows XP の R-2.7.2 でもちゃんと動きました。

あなたの環境で動かないとき,どういうエラーメッセージが出るんでしょうか?

No.07751 Re: Rの以前のバージョンのインスト  【知ったかぶり】 2008/09/25(Thu) 11:38

以下の部分,シングルクォートとダブルクォートが全角になってます.
png(‘test.png ’
plot(x,y,type=”b”

No.07752 Re: Rの以前のバージョンのインスト  【R初心者】 2008/09/25(Thu) 11:56

> arrows(x,uy,x,ly,length=.05,angle=90,code=3)
以下にエラー arrows(x, uy, x, ly, length = 0.05, angle = 90, code = 3) :
オブジェクト "x" は存在しません
> par(new=TRUE)
Warning message:
In par(new = TRUE) : プロットなしで par(new=TRUE) を呼び出しました
> plot(x,z1, type="l",lty=2, xlim=range(0,90),ylim=range(min,max),col=1,pch=1,lwd=1,
cex=Pex, xlab="", ylab="", lab=c(19,8,3),las=1)
以下にエラー plot(x, z1, type = "l", lty = 2, xlim = range(0, 90), ylim = range(min, :
オブジェクト "x" は存在しません
> par(new=TRUE)
Warning message:
In par(new = TRUE) : プロットなしで par(new=TRUE) を呼び出しました
> plot(x,z2, type="l",lty=6, xlim=range(0,90),ylim=range(min,max),pch=1,col=1,lwd=1,
cex=Pex, xlab="", ylab="", lab=c(19,8,3),las=1)
以下にエラー plot(x, z2, type = "l", lty = 6, xlim = range(0, 90), ylim = range(min, :
オブジェクト "x" は存在しません
> abline(h =c(-3,-2,-1,0,1,2,3,4), v = c(5,15,25,35,45,55,65,75,85),col = 1, lty=3)
以下にエラー int_abline(a = a, b = b, h = h, v = v, untf = untf, ...) :
まだ plot.new が呼ばれていません
> ##par(xaxp = c(5,15,25,35,45,55,65,75,85),yaxp=c(-0.015,0.02,8), new=TRUE)
> dev.off()
null device
1
> }
エラー: 予想外の '}' です ( "}" の)
>
です。OSはWindow Vistaです。
エラー中に,グラフィックボードが開いたりしました。R.2.5.1では,ありませんでした。青木先生のグラフでよろしいです。

No.07753 Re: Rの以前のバージョンのインスト  【青木繁伸】 2008/09/25(Thu) 12:11

> > arrows(x,uy,x,ly,length=.05,angle=90,code=3)
> 以下にエラー arrows(x, uy, x, ly, length = 0.05, angle = 90, code = 3) :
> オブジェクト "x" は存在しません

前にも書いたのですが,このarrows 関数の前で grafdm 関数の定義が終わっているよということですね。arrows 関数の定義のプロンプトが + ではなく,> になっている。
で,問題はその前の plot 関数にあり。何が問題か,私は何の気なしに type=”b”のあやしげなダブルクオートをちゃんと半角のダブルクオート " に変換していました。ブラウザの誤表示かと思っていたのだね。

ついでに言えば,png(‘test.png ’の二箇所のクオートもあやしい(というか,エラー)。ちゃんと半角のクオート ' にしてくださいね。これもあったから,私はスルーしちゃったんだけど。(まさか,こんな所を間違うわけはないだろうと思っていた)

まあ,今回のバグは,本当のエラーの場所を指摘できなかった R にもあるか。。。

と,思って,元のままのプログラムをコピー&ペーストしたら Mac 版では,ちゃんとエラーメッセージ出たけどなあ。。。
+     png(‘test.png ’,width=600,height=400)
エラー: syntax error
> plot(x,y,type=”b”,xlim=range(0,90),ylim=range(min,max),col=1,lwd=1,
エラー: syntax error
まあ,そういうことでお試し下さい。

以下に,整理したプログラムを呈示しておきます。参考になればよいけど。3行書いたコメントだけは読んでおいてください。
grafdm<-function(a)
{
# 2008/9/25
x <- a[, 1] # カンマがないと1列のデータフレームになるから後で変なことをしなくてはならなかった
y <- a[, 2] # カンマがあるとちゃんとベクトルになる
ly <- a[, 3] # ly と uy の定義が逆だった(そのせいで min, max がちゃんと設定できなかった)
uy <- a[, 4]
z1 <- a[, 5]
z2 <- a[, 6]
#######################
min <- min(ly, z1, z2)
max <- max(uy, z1, z2)
Pex <- 1
########################
#png("test.png", width=600, height=400)
plot(x, y, type="b", xlim=c(0, 90), ylim=c(min, max), col=1, lwd=1,
pch=19, cex=Pex, xlab="", ylab="", lab=c(19, 8, 3), las=1)
arrows(x, uy, x, ly, length=0.05, angle=90, code=3)
lines(x, z1, type="l", lty=2, col=1, lwd=1)
lines(x, z2, type="l", lty=6, col=1, lwd=1)
abline(h=-3:4, v=0:20*10, lty=3)
#dev.off()
}

No.07754 Re: Rの以前のバージョンのインスト  【R初心者】 2008/09/25(Thu) 14:31

色々,ご指導ありがとうございました。
検討したところ,ソース作成でのエディタとして,Vista上で,Word2007を使用しているのですが,これが,問題です。
メモ帳上では,半角のアポストロフィーで,確かに,
'test'
と書けるのですが,Word2007上では,半角のアポストロフィーが,メモ帳にコピーすると
’test’,
の様に,不思議なことに,全角に変換されてコピーされます。私のマシンの場合ですが。これが,後のプログラムにも作用していました。
私のソースを,メモ帳におとし,アポストロフィーを直しましたら,動きました。

No.07755 Re: Rの以前のバージョンのインスト  【R初心者】 2008/09/25(Thu) 14:45

今,確かめたら,ダブルクオーテーションも,半角,全角とわず,全角に変換されて,メモ帳にコピーされます。
Word2007オプションで,文章校正,入力オートフォーマット,''を’’に変更する,のチェックを外すで,入力も正常になりました。

● 「統計学関連なんでもあり」の過去ログ--- 042 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る