[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 04/17 13:22 / Filesize : 381 KB / Number-of Response : 837
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【R言語】統計解析フリーソフトR 第4章【GNU R】



1 名前:132人目の素数さん mailto:sage [2011/01/09(日) 17:31:49 ]
R は統計計算とグラフィックスのための言語・環境です。
統計計算で重宝するデータ型や、複数要素を処理する演算や関数、
解析結果を表示するグラフィックなど、多彩な機能を提供します。

●関連サイト
The R Project
www.r-project.org/
RjpWiki
www.okada.jp.org/RWiki/
リンク集
www.okada.jp.org/RWiki/?%A5%EA%A5%F3%A5%AF%BD%B8

321 名前:308 [2012/01/19(木) 08:20:42.49 ]
>>319
おお、そんな関数があったとは。


322 名前:308 [2012/01/19(木) 08:22:06.35 ]
>>320
おお、そんな関数があったとは。


323 名前:308 [2012/01/19(木) 08:23:29.36 ]
>>321
おお、そんな関数があったとは。


324 名前:132人目の素数さん mailto:sage [2012/01/19(木) 08:24:58.31 ]
>>312
おお、そんな関数があったとは。


325 名前:132人目の素数さん mailto:sage [2012/01/19(木) 08:25:39.88 ]
>>313
おお、そんな関数があったとは。


326 名前:308 [2012/01/19(木) 08:26:49.60 ]
>>322
おお、そんな関数があったとは。


327 名前:132人目の素数さん mailto:sage [2012/01/19(木) 16:46:26.30 ]
>>323
おお、そんな関数があったとは。


328 名前:132人目の素数さん mailto:sage [2012/01/19(木) 18:16:15.47 ]
>>313
おお、そんな関数があったとは。


329 名前:308 [2012/01/19(木) 19:21:49.25 ]
>>312
おお、そんな関数があったとは。




330 名前:132人目の素数さん mailto:sage [2012/01/19(木) 21:24:53.73 ]
>>305
あと、R sourceとかね。

331 名前:132人目の素数さん mailto:sage [2012/01/19(木) 21:40:30.51 ]
>>330
おお、そんな関数があったとは。


332 名前:132人目の素数さん mailto:sage [2012/01/19(木) 22:15:43.34 ]
>>330
おお、そんなsourceがあったとは。


333 名前:132人目の素数さん [2012/01/19(木) 22:16:42.63 ]
>>330
おお、そんなsourceがあったとは。


334 名前:132人目の素数さん [2012/01/19(木) 22:17:29.69 ]
>>330
おお、そんなsourceがあったとは。


335 名前:132人目の素数さん [2012/01/19(木) 22:18:01.01 ]
>>330
おお、そんなsourceがあったとは。


336 名前:132人目の素数さん [2012/01/19(木) 22:18:19.65 ]
>>330
おお、そんなsourceがあったとは。


337 名前:308 mailto:sage [2012/01/19(木) 22:19:02.38 ]
>>330
おお、そんなsourceがあったとは。


338 名前:308 mailto:sage [2012/01/19(木) 22:19:42.03 ]
>>330
おお、そんなsourceがあったとは。


339 名前:308 mailto:sage [2012/01/19(木) 22:20:11.53 ]
>>330
おお、そんなsourceがあったとは。




340 名前:132人目の素数さん mailto:sage [2012/01/19(木) 23:14:29.36 ]
おおそんウェールズだったとは。

341 名前:308 mailto:sage [2012/01/20(金) 04:32:17.58 ]
おまえら、いい加減にしなさい。

342 名前:132人目の素数さん mailto:sage [2012/01/20(金) 05:22:51.54 ]
おまえら、いい加減にしなさい。

343 名前:313 mailto:sage [2012/01/20(金) 20:36:44.68 ]
スレが伸びていると思ったら、お前ら。。。

でも、実際の話、zapsmall()を知らないで、
条件分岐における数値型の同値の比較を
どうやって今まで書いていたのだろうと不思議に思う。

344 名前:132人目の素数さん [2012/01/20(金) 20:42:23.02 ]
>>307
こいつ自分で質問の意味わかってのかいな?

345 名前:132人目の素数さん [2012/01/20(金) 23:50:31.94 ]
>>343
他の言語と同じように書いてたよ。


346 名前:132人目の素数さん [2012/01/20(金) 23:57:15.16 ]
>>343
abs(x-y) < 10^-14 とか


347 名前:132人目の素数さん [2012/01/23(月) 09:35:12.79 ]
簡単なことですが質問させてください。
10*3の配列があり,1列目と2列目,1列目と3列目の計算し,
元の配列に戻したいばあい,どのように配列指定をしてやれば良いのでしょうか?

たとえば
x <- matrix(1:30, ncol=3)
で,
4列目に
x[,1]+x[,2]
5列目に
x[,1]*x[,2]

おそらく
x <- matrix(x[,1]+x[,2], x[,1]*x[,3], ???????)
で,「???????」を指定すればいいと思うのですが,,,,


よろしくお願いします

348 名前:132人目の素数さん mailto:sage [2012/01/23(月) 09:52:39.90 ]
>>347
> cbind(x,x[,1]+x[,2],x[,1]*x[,2])
[,1] [,2] [,3] [,4] [,5]
[1,] 1 11 21 12 11
[2,] 2 12 22 14 24
[3,] 3 13 23 16 39
[4,] 4 14 24 18 56
[5,] 5 15 25 20 75
[6,] 6 16 26 22 96
[7,] 7 17 27 24 119
[8,] 8 18 28 26 144
[9,] 9 19 29 28 171
[10,] 10 20 30 30 200
こういうこと?

349 名前:347 [2012/01/23(月) 10:02:32.95 ]
早速ありがとうございます
>348

matrix()を使わなければいけないと悩んでいた私が馬鹿でした。
matrizだと横展開にしかならず苦悩しておりました。



350 名前:348 mailto:sage [2012/01/23(月) 12:02:36.25 ]
>>349
いや、cbind()かmatrix()かは好みの問題だと思うぞ。
> matrix(c(x,x[,1]+x[,2],x[,1]*x[,2]),ncol=5)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 11 21 12 11
[2,] 2 12 22 14 24
[3,] 3 13 23 16 39
[4,] 4 14 24 18 56
[5,] 5 15 25 20 75
[6,] 6 16 26 22 96
[7,] 7 17 27 24 119
[8,] 8 18 28 26 144
[9,] 9 19 29 28 171
[10,] 10 20 30 30 200

351 名前:132人目の素数さん mailto:sage [2012/01/23(月) 13:13:39.14 ]
RStudio最新版(0.94.110)はR-2.14以降も動作していますか?
RStudioご利用の方いましたら、ご一報お願いします

352 名前:132人目の素数さん mailto:sage [2012/01/23(月) 13:28:06.82 ]
>>351
$ dpkg -l rstudio r-base |tail -2
ii r-base 2.14.1-1oneiric0 GNU R statistical computation and graphics system
ii rstudio 0.94.110 RStudio
問題なし。


353 名前:132人目の素数さん mailto:sage [2012/01/23(月) 18:42:28.25 ]
Rjpwikiのヲチで申し訳ないが、
河童さんが、par(mfrow=c(2,1))を使わずに、layout(matrix(1:2, 2))を使う理由って何だろう。
layout()だとなんかいいことがあるのかな?


354 名前:308 mailto:sage [2012/01/23(月) 21:15:31.43 ]
うん

355 名前:132人目の素数さん [2012/01/25(水) 18:23:35.62 ]
スペースで区切られた文字列(数値のみ)で,空白をカウントして改行するってことRでできますか?

例えば
1 2 3 4 5 6 7 8 9 10 11 12....

3 2 4 ....
という空白ごとに区切って
1 2 3
4 5
6 7 8 9
10 11 12....
としたいのです。

もし可能ならこのような場合,最初の文字列を配列に組み込むべきなのか,文字列として正規表現として処理するべきなのかどちらが好ましいのでしょうか?

よろしくお願いします

356 名前:132人目の素数さん mailto:sage [2012/01/25(水) 19:06:09.47 ]
>>355
> f355 <- function(x,y){
+ s <- unlist(strsplit(x," "))
+ res <- vector()
+ j <- cumsum(y)
+ res[1] <- paste(s[1:j[1]],collapse='')
+ res[2] <- paste(s[(j[1]+1):j[2]],collapse='')
+ res[3] <- paste(s[(j[2]+1):length(s)],collapse='')
+ return(res)
+ }
>
> f355("1 2 3 4 5 6 7 8 9 10 11 12",c(3,2,4))
[1] "123" "45" "6789101112"

こんな感じか。
あとは、res[1]からres[3]のところをfor文と条件分岐で処理して、
汎用化すればよいと思う。

357 名前:356 mailto:sage [2012/01/25(水) 19:08:12.54 ]
6789と101112を区切ってなかった。
> f355 <- function(x,y){
+ s <- unlist(strsplit(x," "))
+ res <- vector()
+ j <- cumsum(y)
+ res[1] <- paste(s[1:j[1]],collapse='')
+ res[2] <- paste(s[(j[1]+1):j[2]],collapse='')
+ res[3] <- paste(s[(j[2]+1):j[3]],collapse='')
+ res[4] <- paste(s[(j[3]+1):length(s)],collapse='')
+ return(res)
+ }
>
> f355("1 2 3 4 5 6 7 8 9 10 11 12",c(3,2,4))
[1] "123" "45" "6789" "101112"



358 名前:356 mailto:sage [2012/01/25(水) 19:36:19.47 ]
連投すまんがcut()を使った別解。
> f355.2 <- function(x,y){
+ s <- unlist(strsplit(x," "))
+ n <- as.integer(cut(as.integer(s),c(0,cumsum(y),Inf)))
+ sapply(1:length(unique(n)),function(x){s[n==x]})
+ }
>
> f355.2("1 2 3 4 5 6 7 8 9 10 11 12",c(3,2,4))
[[1]]
[1] "1" "2" "3"

[[2]]
[1] "4" "5"

[[3]]
[1] "6" "7" "8" "9"

[[4]]
[1] "10" "11" "12"

多分、識者ならsapply()部分をもっと効率よくできる気がする。

359 名前:132人目の素数さん mailto:sage [2012/01/26(木) 01:27:31.67 ]
f355.3 <- function(x, y)
{
STR.SPLIT <- strsplit(x," ")[[1]]

## y = c(3, 5, 1) で c(1,1,1,2,2,2,2,2,3)を返す
GROUP <- inverse.rle(list(lengths = y,
values = seq_along(y)))

## 上記のGROUPにあわせてsplit()
split(x = STR.SPLIT[seq_along(GROUP)], f = GROUP)
}

## これなら数字の順番がめちゃくちゃでも、文字列でも行けるかも。spaceが続くとおかしくなるけど
f355.3(x = "2 ch R 2012 01 26 2 0 1 2 0 1 2 6 R", y = c(3, 5, 1, 2, 2))




360 名前:355 [2012/01/26(木) 07:03:57.07 ]
>356-359

ご教授ありがとうございます。
配列に組み込んだものをループで処理することしか考えてませんでしたので,
以外な回答です。

プログラムに関しては勉強中なのですがなかなか上手くいかず悩んでおります。

ありがとうございます

361 名前:355 [2012/01/26(木) 08:28:33.03 ]
連投申し訳ありません。
これまで統計処理に関してRを利用してきましたが,この度プログラミングもしっかり勉強したいと思うようになりました。
先にも記したようにプログラミングは初学者です。
CやPerlなど多様な言語がありますが,Rの場合どの系統のプログラミング教本で勉強を始めれば良いのでしょうか?
オススメ教科書があればよろしくお願い致します。


362 名前:132人目の素数さん mailto:sage [2012/01/26(木) 10:23:38.00 ]
>>361
>>356だけど、正統なプログラミングの勉強をしたことがない。
プログラミングの勉強って、語学の勉強と似ていると思う。
一通り、文法を勉強したら、あとはひたすら経験を積むだけ。
人の表現を聞いて、あぁこういう場面ではこういう風に言えばいいのか、
と人まねを積み重ねる。

一通りの文法レベルの話なら、私はまだ未読だけど、
間瀬先生のRプログラミングマニュアルはどうかな。
間瀬先生の本なら、間違いはないと思う。

>>359
おぉ素晴らしい。rle()の存在を失念していました。



363 名前:359 mailto:sage [2012/01/26(木) 11:44:04.18 ]
統計解析に持っていくためのデータの準備ということであれば
Rデータ自由自在(Data Manipulation with R)がおすすめ。

Rプログラミングマニュアル(間瀬)は辞書的な感じ。

Rの基礎とプログラミング技法(石田訳)、プログラミングR(高階)は読み物的な感じ。
レイアウト的に後者の方が読みやすいか。

海外では最近出たThe Art of R Programmingがよいとされている様子。

364 名前:132人目の素数さん [2012/01/27(金) 14:53:34.00 ]
あるベクトルの,p番目からq番目までの和を求める関数ってある?


365 名前:364 mailto:sage [2012/01/27(金) 15:34:02.11 ]
基本的な物を見落としておりますた。
すみません

366 名前:132人目の素数さん mailto:sage [2012/01/28(土) 12:45:02.86 ]
>>364
sum(vector.name[p:q])
が一番普通か

367 名前:132人目の素数さん mailto:sage [2012/01/30(月) 00:42:00.17 ]
コンタープロットで、データがマトリクスになっている場合はいいのですが

(x,y,z)=
(0,0,0)
(1,1,2)
(3,2,4)
(0,9,2)
(2,0,4)

みたいに不規則な点列で構成された場合のコンタープロットを作成することは
出来ませんでしょうか?
Zの値を0〜1に正規化して、(x,y)の位置にgray(z)で塗りつぶした円を二次元プロットする
っていう手法でそれらしいものを作ってはみたものの、やっぱりイマイチなのでw



368 名前:132人目の素数さん mailto:sage [2012/01/30(月) 11:00:34.81 ]
>>367
ぱっと思いつくのは、グリッドを作成して、(x,y,z)の値から、スプラインやkrigingなど
空間平滑法で各グリッド点における値を推定し、それで等値線を描く。

369 名前:名無しさん mailto:sage [2012/01/30(月) 21:51:46.12 ID:???]
>>368
krigingでググると
web.sfc.keio.ac.jp/~maunz/wiki/index.php?%C2%E807%B2%F3%B1%E9%BD%AC%A5%DE%A5%CB%A5%E5%A5%A2%A5%EB
っていうのが見つかりました。
ちょっとやってみます。どもでした。




370 名前:名無しさん mailto:sage [2012/01/30(月) 23:07:03.68 ID:???]
フジテレビ式円グラフはどうやって作ればよいのでしょうか?
blog.livedoor.jp/dqnplus/archives/1692812.html


自分にはこんなのが精一杯でした...

library(ggplot2)

DF <- data.frame(age=c("10〜20代", "30代","40代","50代"), value=c(97,78,78,94))

ggplot(DF, aes(x=age, y=value, fill = age)) +
geom_bar(width = 1) +
scale_y_continuous(breaks = 0:100) +
coord_polar() +
labs(x = "", y = "") +
opts(legend.position = "none", axis.text.y = theme_blank(),axis.ticks = theme_blank())



371 名前:名無しさん mailto:sage [2012/01/30(月) 23:16:40.05 ID:???]
>>370
また奥村先生がアップをはじめそうなグラフが出てきたな。

372 名前:名無しさん mailto:sage [2012/01/31(火) 00:39:21.68 ID:???]
中心をずらすって言うのはグラフ的にあり得ないからグラフのパッケージでは無理だと思う。
できるとしたら地図関係のパッケージだろうね。

373 名前:名無しさん mailto:sage [2012/01/31(火) 10:47:16.46 ID:???]
>>369
こんな感じじゃないの
i <- (1:360)/360*2*pi
cntr <- c(0.1,0.3)
v <- c(94,78,78,97)
arc <- cut(1:360,c(0,round(cumsum(v)*360/sum(v)),Inf))

plot(cos(i),sin(i),type="n",asp=1,axes=FALSE,xlab="",ylab="")
l <- levels(arc)
cols <- c("deepskyblue","dodgerblue1","dodgerblue3","brown1")
lbs <- c("50代\n94人","40代\n78人","30代\n78人","10〜20代\n97人")
cexs <- c(1.5,1.5,1.5,3)
for (j in 1:4){
k <- c(i[arc==l[j]],max(i[arc==l[j]])+1/360*2*pi)
polygon(c(cntr[1],cos(k)),c(cntr[2],sin(k)),
col=cols[j])
text(mean(cos(k))/1.5,mean(sin(k))/1.5,lbs[j],cex=cexs[j])
}


374 名前:名無しさん mailto:sage [2012/01/31(火) 12:12:08.71 ID:???]
>>370
ウジのグラフは、センターがずれてるだけじゃなくて「弧の長さの割合」も意図的に変えてるから、完全再現は無理みたいよw
参考 blog.kzfmix.com/entry/1327735061

そもそも、あんなおぞましいグラフを好んで描く必要ないと思うけど、こんなんでどう?
library(grid)
quartz(height=4, width=4)
#png(filename = "fuji-pie.png", width = 360, height = 360, units = "px")
num <- c(94, 97, 78, 78)
distortion <- c(1, 1.2, 1, 1) # <- !!
dist_num <- num * distortion
cum <- c(0, cumsum(dist_num))
rad <- cum / sum(dist_num) * 360 / 180 * pi
colors <- c("#0000FFAA", "#FF0000AA", "#000055AA", "#0000AAAA")
labels <- paste(c("50ies¥n", "10~20ies¥n", "30ies¥n", "40ies¥n"), num, " ps", sep="")
lab_cex <- c(1, 1.5, 1, 1)
lab_col <- c("white", "yellow", "white", "white")
div <- 200 # 円弧部分の分割数
dx <- 0 # 半径=0.5 として、x 方向への中心のズレ (-0.1 とかにすると、より強烈w)
dy <- 0.1 # 半径=0.5 として、y 方向への中心のズレ
for (i in 1:length(num)) {
x <- c(0.5 + dx, 0.5 + 0.5 * sin(rad[i]), 0.5 + 0.5 * sin(seq(rad[i], rad[i+1], length.out=div)), 0.5 + 0.5 * sin(rad[i+1]))
y <- c(0.5 + dy, 0.5 + 0.5 * cos(rad[i]), 0.5 + 0.5 * cos(seq(rad[i], rad[i+1], length.out=div)), 0.5 + 0.5 * cos(rad[i+1]))
grid.polygon(x=x, y=y, gp=gpar(fill=colors[i]))
grid.text(x=0.5 + 0.4 * sin((rad[i]+rad[i+1])/2), y=0.5 + 0.4 * cos((rad[i]+rad[i+1])/2), label=labels[i], gp=gpar(col=lab_col[i], cex=lab_cex[i]))
}
#dev.off()

RjpWikiにも置いときました。
www.okada.jp.org/RWiki/?R%20%A4%C7%A5%A8%A5%F3%A5%BF%A5%E1#nf026bb6


375 名前:名無しさん mailto:sage [2012/01/31(火) 12:41:24.02 ID:???]
>>373-374
すげー
これフジテレビに売り込みにいけよwww

376 名前:373 mailto:sage [2012/01/31(火) 14:45:06.35 ID:???]
私の方もRjpwikiに追加しておきました。

>>374さんは河童さんかと一瞬思ったけど、
そういえば河童さんはgridが嫌いだったから、別な人ですね。

377 名前:375 mailto:sage [2012/01/31(火) 23:04:16.60 ID:???]
もちろん、河童さんの足下にも及ばない半素人です

裏Wikiの方でも、がっつりとダメ出しされましたw
でも「裏」氏のファンなので、ちょっと嬉しかったりもしますw

378 名前:374 mailto:sage [2012/01/31(火) 23:16:34.60 ID:???]
↑で、名前間違えてた...orz

379 名前:名無しさん mailto:sage [2012/01/31(火) 23:52:13.20 ID:???]
まさに誰得関数!



380 名前:132人目の素数さん mailto:sage [2012/02/02(木) 15:19:45.32 ]
知恵を貸してください。
0〜6ぐらいまでの整数を要素にもつサイズが50のベクトルを作りたい。
できればポアソン分布に従って。
ここまでなら、
> rpois(50,2.5)
[1] 1 1 1 4 4 3 0 3 3 3 0 1 1 0 4 5 2 2 2 2 4 0 4 4 2 1 3 1 1 3 3 2 1 1 3 4 3 3
[39] 3 3 4 1 1 1 5 5 1 0 3 6
こんな感じでできるんだけど、このベクトルの合計をきっちり150にしたい。
固定したいのは、ベクトルサイズ50とベクトル合計値150だけで、lambdaとかは適当でいい。

当たり前だけど、合計値は変動する。
> sum(rpois(50,2.5))
[1] 132
> sum(rpois(50,2.5))
[1] 131
> sum(rpois(50,2.5))
[1] 118

こういうときはどうすればいいんだろうか。
よろしくお願いします。

381 名前:132人目の素数さん [2012/02/02(木) 16:52:09.32 ]
>>380
無理やりの処理だが、こんなんじゃ駄目?

mypois <- function(n=50,sum=150,adjtimes=10){
myvec <- rep(0,times=n)
mysum <- 0
for(i in 1:adjtimes){
mysum <- sum(myvec)
myvec <- myvec + sign(sum-mysum)*rpois(n,abs(sum-mysum)/n)
myvec[myvec < 0] <- 0
if( abs(sum-mysum) == 0 ){ break }
}
return(myvec)
}

> x <- mypois(50,150)
> x
[1] 3 2 3 2 5 3 4 5 4 0 1 1 5 4 6 3 5 5 0 4 4 3 4 5 4 7 1 4 1 2 1 2 3 2 1 3 7 2
[39] 0 2 2 3 0 1 3 6 3 4 2 3
> sum(x)
[1] 150


382 名前:381 mailto:sage [2012/02/02(木) 17:00:53.33 ]
0から6になってなかったのと、計算の順番がおかしかったので修正した。

mypois <- function(n=50,sum=150,max=6,adjtimes=10){
myvec <- rep(0,times=n)
mysum <- 0
for(i in 1:adjtimes){
myvec <- myvec + sign(sum-mysum)*rpois(n,abs(sum-mysum)/n)
myvec[myvec < 0] <- 0
myvec[myvec > max] <- max
mysum <- sum(myvec)
if( abs(sum-mysum) == 0 ){ break }
}
return(myvec)
}

> x <- mypois(50,150,6)
> x
[1] 1 6 1 0 5 3 5 1 2 6 3 3 6 3 3 3 3 3 1 4 2 3 3 0 5 4 3 6 3 5 2 4 4 0 2 1 3 3
[39] 2 4 0 2 1 3 6 4 4 2 1 6
> sum(x)
[1] 150


383 名前:381 [2012/02/02(木) 17:33:39.03 ]
青木先生のところの poissondist に嵌めたら、今一つなのは、
0〜6からはみ出たデータを丸めたからかな。上手い方法がないものかねぇ。

> x <- mypois(50,150,6)
> x
[1] 5 2 1 3 4 4 3 4 3 0 5 5 3 3 1 2 4 4 4 2 5 0 3 4 2 2 3 4 4 1 6 1 1 5 4 4 2 4
[39] 2 5 1 3 2 0 5 2 5 4 1 3
> poissondist(hist(x,plot=F)$counts)

ポアソン分布への適合度の検定

data: hist(x, plot = F)$counts
X-squared = 9.7821, df = 4, p-value = 0.04426
sample estimates:
n lambda
50.00 2.06


384 名前:132人目の素数さん mailto:sage [2012/02/02(木) 18:40:11.25 ]
>>381-383
おぉ、十分です。最大は「6ぐらい」なので7とかでもOKですから、
丸めはマイナスになるときだけ必要です。
for文のところはとても勉強になりました。
ありがとうございました。


385 名前:132人目の素数さん mailto:sage [2012/02/06(月) 23:36:20.10 ]
こんばんはR初心者です。
一通り調べたのですが、分からない事があるので質問させてください。
○行ごとのplotを行いたい場合、どのようなコマンドを打てば良いのでしょうか?

例えば、
y1 y2...y10
x1
x2
.
.
.
x100
このような100行×10列のデータフレーム名Xの2列目と4列目をplotしたい場合、
plot(X$y2,X$y4)で1行ごとのplotは出来るのですが、
これをx1,x5,...x100と5行おきにplotしたいのです。

どうかご教授ください。


386 名前:132人目の素数さん mailto:sage [2012/02/07(火) 00:25:49.86 ]
>>385
X1 <- X[(0:20)*5+2, ]

387 名前:132人目の素数さん mailto:sage [2012/02/07(火) 08:46:05.39 ]
>>385
>このような100行×10列のデータフレーム名Xの2列目と4列目をplotしたい場合、
>plot(X$y2,X$y4)で1行ごとのplotは出来るのですが、
>これをx1,x5,...x100と5行おきにplotしたいのです。

plot(X[seq(1, 100, 5), c(2, 4)])
でどう?

[行番号, 列番号]
で要素を指定

seq(from, to, by)で1,6,11.16...,100をつくる




388 名前:132人目の素数さん mailto:sage [2012/02/07(火) 22:43:27.83 ]
>>385

1,5,...,100 は、最初だけ4行の間隔ですね。
5,10,15,...,100 、あるいは、1,6,11,...,96 ですか?

でしたら、私のお薦めも >>387 と同じ方法。


389 名前:132人目の素数さん mailto:sage [2012/02/08(水) 13:38:50.77 ]
Emacs ESS でアンダースコアが" <- "になってしまうのが凄く迷惑なんだけど
なんであれがデフォルトなんだろう



390 名前:132人目の素数さん mailto:sage [2012/02/08(水) 17:34:58.86 ]
タイプ量減るしいいじゃん。

391 名前:132人目の素数さん mailto:sage [2012/02/08(水) 20:31:18.89 ]
>>389
アンダースコア2度打ちで、アンダースコアを入力できるというのを
知った上で迷惑と行っているのだろうね。

そもそもRではアンダースコアは使用禁止だったので、
空いているアンダースコアにその機能が割り当てられたという歴史的経緯がある。
デフォルトの理由は、>>390の言うとおり便利で楽だかから。
いやな人は設定を変更すればいいし。

逆にターミナルでRを使っていて、<-のつもりでアンダースコアを入力して
イラッと来ることがある。


392 名前:132人目の素数さん mailto:sage [2012/02/08(水) 22:46:01.26 ]
>>391
設定変えるためにググってたらrjpに飛んで、そこで初めて二度打ちやC-q _ でアンダースコアを入力できることを知った

アンダースコアを打つためにわざわざテキストモードに変更してた

よく調べもしないで愚痴言ってすいません

393 名前:132人目の素数さん mailto:sage [2012/02/13(月) 12:25:46.70 ]
emacs essでRコマンダー使うとRコマンダーで外部データを読み込ませた瞬間固まるorz
うまくいってるかたいますか?


394 名前:393 mailto:sage [2012/02/13(月) 14:44:06.36 ]
すいません自己解決?しました。

emacsのR側で一行でも改行がコマンドを実行すればコマンダー側のフリーズが直りました。

フリーズ自体は何台かのPCで試したところ起こる場合と起こらない場合がありました。
環境に依存するようです。


395 名前:132人目の素数さん [2012/02/13(月) 22:00:37.21 ]
>>393,394
emacs ess で Rコマンダーを使うメリットって、何?
利点がまったく分からないのだけど。


396 名前:393 mailto:sage [2012/02/14(火) 00:04:31.33 ]
>>395
ご指摘のとおりで。
研究仲間がコマンダー使ってて、両方同時に使えると便利だから試しました。
まぁそうじゃなくても使えないよりは使えたほうが少しくらい便利かなと、、、

397 名前:132人目の素数さん mailto:sage [2012/02/15(水) 23:54:50.83 ]
Rにはschemeなんかのfoldにあたるような高階関数はないんですか?
せっかくベクトル演算言語なので数え上げも高階関数で出来ればと思ったんですが。

398 名前:132人目の素数さん mailto:sage [2012/02/16(木) 09:49:58.30 ]
>>397
stat.ethz.ch/R-manual/R-patched/library/base/html/funprog.html
プログラミング言語はよくわからないけど、これは参考になるだろうか?

399 名前:132人目の素数さん mailto:sage [2012/02/16(木) 09:57:29.11 ]
>>398
たぶん Reduce()がfoldに相当するんじゃね



400 名前:397 mailto:sage [2012/02/16(木) 16:23:10.40 ]
>>398>>399
それです
ありがとうございます

401 名前:398 mailto:sage [2012/02/16(木) 16:52:41.50 ]
>>400
いまいちイメージがわかないんだけど、面白い使い方があったら、教えてくだされ

402 名前:132人目の素数さん [2012/02/17(金) 05:50:16.64 ]
lmによる回帰分析で、切片をあらかじめ固定することはできますか?
切片を取り除くには「-1」を指定するということはわかりますが、ここを好きな値に固定したいのですが・・・

403 名前:132人目の素数さん mailto:sage [2012/02/17(金) 13:00:44.62 ]
>>402
ttp://r.789695.n4.nabble.com/R-Forcing-the-intercept-td812422.html


404 名前:397 mailto:sage [2012/02/17(金) 19:52:56.72 ]
>>401
おもしろいかどうかわかりませんが、
data <- as.integer(runif(10,1,21))
のようなデータがある時に、
predicate <- function(x) { x < 5 }
が真になるような項目を数え上げたいとします。

for文を使うと

ret <- 0
for(i in 1:length(data)){ if (predicate(data[i])) { ret <- ret + 1 } }

のような形になりますが、高階関数を使うと、

length(Filter(predicate, data))

と書けるようになります。
これは関数プログラミングの技法で、もう少し詳しく学びたいようでしたら
programming in haskellなんかが薄くていい本なんじゃないかと思います。

405 名前:132人目の素数さん mailto:sage [2012/02/17(金) 20:15:30.11 ]
>>404
>>401じゃなくて申し訳ないが、
> length(Filter(predicate, data))
[1] 4
> sum(data<5)
[1] 4

この場合だと下の方が簡単。しかも、
> system.time(sapply(1:1000, function(x){length(Filter(predicate, data))}))
ユーザ システム 経過
0.072 0.000 0.074
> system.time(sapply(1:1000, function(x){sum(data<5)}))
ユーザ システム 経過
0.000 0.000 0.002
圧倒的に速い。

406 名前:405 mailto:sage [2012/02/17(金) 20:17:05.57 ]
s/下の方が/後者の方が/


407 名前:132人目の素数さん mailto:sage [2012/02/17(金) 22:46:29.44 ]
>>404
「おぉ高階関数はこれほどまでに便利なものかと実感できる事例」を期待している。

408 名前:132人目の素数さん mailto:sage [2012/02/18(土) 05:48:26.33 ]
rubyで高階関数組み合わせてやってたけど
Rに移ってtapplyとかmapplyが便利すぎて禿げた

409 名前:132人目の素数さん mailto:sage [2012/02/18(土) 06:05:41.05 ]
>>404
Filter()の例は
length(data[data < 5])
みたいなもんか




410 名前:397 mailto:sage [2012/02/18(土) 11:40:22.15 ]
>>405
なるほど、そんな書き方が出来るんですか
だとしたらそちらの方がよさそうです
速度はおそらく最適化の問題でしょう
下の方がRネイティブっぽいので十分な最適化が行われているんだとおもいます

411 名前:397 mailto:sage [2012/02/18(土) 12:01:56.66 ]
>>407
事例はちょっと思いつかないんですが
高階関数はプログラムの中の構造を関数として再利用するためのものです

その点では>>404はあまりいい例ではなくて、
ret<-0
for(i in 1:length(data)){if(predicate(data[i])){ret<-ret+1}else{ret}}
について高階関数を利用する例だとすると、
Reduce(function(ret, x){if(predicate(x)){ret+1}else{ret}},data,0)
になります。これは外側のループの部分の構造をReduceという関数で再利用していると言う形になります

でもどうやらこの手の単純な高階関数はベクトル計算という形でRに組み込まれているようなので
あまり出番はなさそうですね

412 名前:132人目の素数さん [2012/02/19(日) 03:55:37.05 ]
          __ノ)-'´ ̄ ̄`ー- 、_
        , '´  _. -‐'''"二ニニ=-`ヽ、
      /   /:::::; -‐''"        `ーノ
     /   /:::::/           \
     /    /::::::/          | | |  |
     |   |:::::/ /     |  | | | |  |
      |   |::/ / / |  | ||  | | ,ハ .| ,ハ|
      |   |/ / / /| ,ハノ| /|ノレ,ニ|ル' 
     |   |  | / / レ',二、レ′ ,ィイ|゙/   私は只の数ヲタなんかとは付き合わないわ。
.     |   \ ∠イ  ,イイ|    ,`-' |      頭が良くて数学が出来てかっこいい人。それが必要条件よ。
     |     l^,人|  ` `-'     ゝ  |        さらに Ann.of Math に論文書けば十分条件にもなるわよ。
      |      ` -'\       ー'  人          一番嫌いなのは論文数を増やすためにくだらない論文を書いて
    |        /(l     __/  ヽ、           良い論文の出版を遅らせるお馬鹿な人。
     |       (:::::`‐-、__  |::::`、     ヒニニヽ、         あなたの論文が Ann of Math に accept される確率は?
    |      / `‐-、::::::::::`‐-、::::\   /,ニニ、\            それとも最近は Inv. Math. の方が上かしら?
   |      |::::::::::::::::::|` -、:::::::,ヘ ̄|'、  ヒニ二、 \
.   |      /::::::::::::::::::|::::::::\/:::O`、::\   | '、   \
   |      /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ  ヽ、  |
  |      |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、  /:\__/‐、
  |      |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
   |     /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
   |    |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
    |   /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/

413 名前:132人目の素数さん mailto:sage [2012/02/19(日) 08:58:51.23 ]
教えてください。
Epiパッケージを使用して、ROC曲線下面積を求めたら0.5未満になりました。
独立変数は二分変数に関係しないと判断しその値(0.425)を記載することは正しいのでしょうか?



414 名前:132人目の素数さん mailto:sage [2012/02/19(日) 17:00:59.94 ]
アウトカムの変数は予測因子の数字が大きくなると大きくなると陽性になりますか?もし数が大きい方がアウトカムが陰性ならば、アウトカムの1,0をひっくり返す必要があるかも?

415 名前:132人目の素数さん mailto:sage [2012/02/19(日) 23:14:01.45 ]
>>414
ありがとうございます。
明日にでも、いれかえて検討してみます。

416 名前:132人目の素数さん [2012/02/29(水) 23:39:27.42 ]
応答曲面法で最適値を求めるっていうのは出来ないのか?
パッケージrsmがそれっぽいんだが


417 名前:132人目の素数さん mailto:sage [2012/03/01(木) 23:08:27.13 ]
>>416
なんていうか、もろに、rsm() がそうなんだが?
使い方は
www.jstatsoft.org/v32/i07/paper
をみてくれ


418 名前:132人目の素数さん [2012/03/03(土) 12:45:30.73 ]
Rを2.14.2にしたいんですが、インストールして再起動すると確かに2.14.2にはなるんですが、保存していたオブジェクトが全て消えてしまいます
オブジェクトを引き継ぐ方法はないんでしょうか?
今は2.13.1を使ってます

419 名前:132人目の素数さん mailto:sage [2012/03/03(土) 16:40:03.10 ]
save(list = ls(all=TRUE), file = "old.RData")
で明示的に保存ファイルを作って、
それを新バージョンで
load(file = "old.RData")
したらどうなる?





420 名前:132人目の素数さん mailto:sage [2012/03/04(日) 18:26:31.31 ]
マルチコア対応しましたか〜??

421 名前:132人目の素数さん mailto:sage [2012/03/04(日) 19:53:40.43 ]
parallelというパッケージができたね






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<381KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef