12/06/28 16:25:13.46
>>576
サンクス!
CRAN関連ばかり探していたから引っかからなかった訳だ。
ダウンロードして見たが、CRANじゃないのでインストール方法が判らん。
初心者なんでもうちょっと勉強してみる。
578:132人目の素数さん
12/06/28 16:40:01.10
>>577
$ sudo R CMD INSTALL Rcompression_0.93-2.tar.gz ROpenOffice_0.4-0.tar.gz
でOK。
Rcompressionがない状態でROpenOfficeをインストールしようとすると、
$ sudo R CMD INSTALL ROpenOffice_0.4-0.tar.gz
* installing to library ‘/usr/local/lib/R/site-library’
ERROR: dependency ‘Rcompression’ is not available for package ‘ROpenOffice’
* removing ‘/usr/local/lib/R/site-library/ROpenOffice’
とおこられちゃう。
Windowsで R CMD INSTALLを使う場合は、 別途Windows toolsetが必要らしい。
URLリンク(cran.r-project.org)
579:132人目の素数さん
12/06/28 17:39:04.25
>>578
重ね重ね丁寧に答えていただき、有難うございます!
580:132人目の素数さん
12/07/02 23:44:45.34
__ノ)-'´ ̄ ̄`ー- 、_
, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
581:575
12/07/04 19:45:39.22
Window toolsetがイマイチ判らず、ROpenOffice試せずにいたのですが、
Googleドキュメントのspreadsheetで read.csv("URL") から直接データーを
取り込めることを知り、色々試しているところです。
現時点では、spreadsheetのセル内に日本語使用すると、read.csv 失敗します。
英文字のみであれば、問題なく取り込めています。
バージョンの新しRだど2byte文字処理で不具合出るという話もあったので、
現状では出来るだけ日本語使用しないほうが良いみたいですね。
それから、Google spreadsheet をcsv形式でダウンロードしたファイルは、
Shift-JISにデコードし直さないと read.csv で取り込めませんでした。
UTF-8形式だったから読み込めなかったのかなあ。
まあそれでも Google spreadsheet が使えることが判ったので、
データー入力ツールはこれでいくことにします。
582:132人目の素数さん
12/07/05 09:17:17.75
>>581
ヘルプぐらい読んでもよいと思うよ。
fileEncoding: character string: if non-empty declares the encoding used
on a file (not a connection) so the character data can be
re-encoded. See the ‘Encoding’ section of the help for
‘file’, the ‘R Data Import/Export Manual’ and ‘Note’.
encoding: encoding to be assumed for input strings. It is used to mark
character strings as known to be in Latin-1 or UTF-8 (see
‘Encoding’): it is not used to re-encode the input, but
allows R to handle encoded strings in their native encoding
(if one of those two). See ‘Value’.
583:575
12/07/05 19:39:30.67
>>582
サンクスです! help読んでなかった・・・・
read.casv("file name", encording="UTF-8")で無事読み込めました。
これでだいぶ助かります。
584:132人目の素数さん
12/07/11 12:33:21.72
URLリンク(www.facebook.com)
てっきり高校生か未熟な大学生と思っていたら、
案外おっさんだったw
老けて見えるだけかな。
何にせよ、某所には、公共性の高いものだけに絞って書き込んで、
それ以外は、ここ(2ch)に書き込んで欲しいぞ。
c(letters[1:26])とか、初心者や入門者を混乱させることを目的とした
嫌がらせとしか思えないぞ。
585:132人目の素数さん
12/07/20 12:52:33.55
Mac OSX, Cocoa 環境でアプリ内から/Library/Frameworks/R.framework/Resources/にある実行ファイルを叩いてRを使っています。
[ NSTask launch... ] といった感じです。
しかし、スクリプトの末尾にq()を付けてもRの実行ファイルが動いたままになります(アクティビティモニタで確認)。
NSTask のterminateを呼び出しても消えてくれません。
どうもこれが悪さをして意図した動作をしてくれ内容です。
対処方法ご存知のかたがいましたらご回答をお願いします。
586:132人目の素数さん
12/07/20 13:15:11.45
>>585
q()の引数saveを省略すると"ask"になるのでは?
ヘルプには
| The default is to ask in interactive use but may be overridden by
| command-line arguments (which must be supplied in non-interactive
| use).
って書いてある。
つまり、実験せずに書くが、q()と書いても、入力待ちプロンプトで無限ループになってる気がするぞ。
587:132人目の素数さん
12/07/20 13:52:36.69
>>585
q("no")
とすれば、入力待ちにならないのでは?
588:132人目の素数さん
12/07/20 14:00:19.17
レスありがとうございます。
q()の引数にnoを追加しましたが、依然挙動不審です。
どうもコマンド引数に < script.r と指定したスクリプトを読み込めない場合があるようです。
なんこれ? な状況ですが。
最小単位の構成から実験してみます。
589:132人目の素数さん
12/07/20 14:05:39.29
>>585
いずれにせよ、q("no")やq("yes")は関係ない。
それらがなくても処理は終了する。
$ echo 'a <- 1' > /tmp/tmp.R
$ echo 'print(a)' >> /tmp/tmp.R
$ /Library/Frameworks/R.framework/Resources/R CMD BATCH /tmp/tmp.R out.txt
$ tail -7 out.txt
> a <- 1
> print(a)
[1] 1
>
> proc.time()
ユーザ システム 経過
0.825 0.051 1.074
ちゃんと終了する。
590:589
12/07/20 14:09:30.38
あと、
$ ls -l $(which R)
lrwxr-xr-x 1 root wheel 47 4 27 16:45 /usr/bin/R -> /Library/Frameworks/R.framework/Resources/bin/R
だから、普通に
$ R CMD BATCH スクリプト 結果ファイル
でいいよ。
591:馬鹿を焼く描写 ◆ghclfYsc82
12/07/22 16:58:54.77
★★★学歴格差:無意味
★★★学力格差:尊重しろ
★★★能力格差:最大限利用せよ。
東大や京大にだって馬鹿は沢山居てるんだヨ。
学力格差と能力格差を認める理想社会を実現しろや。要するに:
★★★『馬鹿は無意味なので不必要だから、従って無能は静かにせよ。』★★★
っちゅうこっちゃ。低脳が騒ぐのはワシが許さんのや。
ちゃんと読め。
描
592:132人目の素数さん
12/07/26 09:47:52.47
行列の作り方について質問です
xという1×n個の配列があって、
yという行列の要素を
y[i][j] = x[i]+x[j]としたいとき、
y行列を作る文はどのようにしたら良いのでしょうか
593:132人目の素数さん
12/07/26 10:44:18.59
>>592
> n <- 10
> x <- 1:n + 10
> x
[1] 11 12 13 14 15 16 17 18 19 20
> outer(x, x, "+")
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 22 23 24 25 26 27 28 29 30 31
[2,] 23 24 25 26 27 28 29 30 31 32
[3,] 24 25 26 27 28 29 30 31 32 33
[4,] 25 26 27 28 29 30 31 32 33 34
[5,] 26 27 28 29 30 31 32 33 34 35
[6,] 27 28 29 30 31 32 33 34 35 36
[7,] 28 29 30 31 32 33 34 35 36 37
[8,] 29 30 31 32 33 34 35 36 37 38
[9,] 30 31 32 33 34 35 36 37 38 39
[10,] 31 32 33 34 35 36 37 38 39 40
こういうことか?
594:132人目の素数さん
12/07/26 11:55:59.91
>>593さま
そうです!
ありがとうございます!
助かりました
595:132人目の素数さん
12/07/26 12:08:58.20
>>594
助かったのなら何よりなんだけど、
宿題の類だったのなら、確認もせずに教育の邪魔をして教員に申し訳ない。
596:132人目の素数さん
12/08/05 22:25:40.52
n=1,2,...,Nに対してP(n)のデータがあります
このデータがどの確率分布か言い当てることはできますか
597:132人目の素数さん
12/08/05 23:48:09.66
>>596
これまた宿題っぽい。
質問の動機や、動機を得るに至った背景を説明してもらえますか
598:132人目の素数さん
12/08/07 01:02:34.43
>>597
R触ってみようと思って最初に思い浮かんだのがこれ
なんだけど探しても見つからないもんだからここで聞くことにした
599:132人目の素数さん
12/08/07 04:10:01.29
>>598
ググると「コルモゴロフ-スミルノフ検定」というのが出てきた。
600:132人目の素数さん
12/08/07 13:49:09.80
>>596
>>599さんの答えだけだと、初心者はどうしてよいか分からないと思うので助言します。
> RSiteSearch("Kolmogorov-Smirnov")
以上。
601:132人目の素数さん
12/08/08 15:54:24.83
Mac版Rのデフォルトでのフォントって何でしたっけ?
コマンド入力中にうっかりよくわからないキー押してしまったみたいでフォントが変わってしまって・・。
602:baka描 ◆ghclfYsc82
12/08/08 17:29:54.67
描
>14 名前:132人目の素数さん :2012/08/07(火) 17:39:00.96
> >>13
> 旧コテ猫あらため描つまりお前自身の事だろ、増田哲也に限り無く近い人間。
> 筑波大学で痴漢と言えば増田哲也だから連続性も明らかになってるから
> わざわざ限り無く近い人間なんて呼び方しなくていいんだけどな
>
603:132人目の素数さん
12/08/08 19:18:57.57
__ノ)-'´ ̄ ̄`ー- 、_
, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
604:132人目の素数さん
12/08/08 21:07:17.90
__ノ)-'´ ̄ ̄`ー- 、_
, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
605:132人目の素数さん
12/08/12 19:33:37.42
Rで、グラフとして描画されているデータをテキスト出力出来ますか?
Rを使える人が私以外いないので、
Excelで配布しなければなりません。
今は描画前の関数データを張り付けていますが、
縦軸が変わってしまうので、グラフ描画からそのまま出力したいと思っています。
606:132人目の素数さん
12/08/13 09:08:15.60
>>605
意味が分からない。
> Rで、グラフとして描画されているデータをテキスト出力出来ますか?
Rグラフィックで描画するには、描画するためのデータがあると思うのだけど。
もしそうなら、そのままテキスト出力すればよいと思うが、
そんなことをわざわざ質問するとは思えないから、よく分からない。
テキスト出力とExcelの関連も意味不明。
> a <- data.frame(x=runif(10), y=runif(10))
というデータフレームがあったとして、
> plot(a)
とRグラフィックに描画して、次のようにすればテキスト出力される。
> a
x y
1 0.1401729 0.223354073
2 0.8426009 0.880151101
3 0.2795089 0.002605373
4 0.8179064 0.131089282
5 0.3903741 0.580761547
6 0.1708031 0.793535840
7 0.8964184 0.198217040
8 0.6109237 0.136335747
9 0.7519352 0.367561028
10 0.6382441 0.429468494
607:132人目の素数さん
12/08/13 09:53:15.56
>>606
なるほど。データフレームにしてしまえばトラブルを解消できそうです。
今まで、xとyを別々に指定するような作業をしていたので気が付きませんでした。
ありがとうございました。
608:132人目の素数さん
12/08/26 09:50:32.98
教えてください。
開始日,数
1,5
2,2
3,4
4,8
……
30,5
のような時系列データの信頼区間やピークを求めたいのですが、
解説サイトとかないでしょうか。
609:132人目の素数さん
12/08/27 11:10:35.51
>>608
ピークを得るためには、当てはめる関数の形が必要でしょう。
あなたの研究対象に対する先験的知識が本質的に必要だと思われます。
例えばポアソン分布に当てはめられるタイプのデータだと次のようになります。
d <- data.frame(x=1:30, y=round((dpois(1:30,10) + runif(30, max = 0.01))*100))
barplot(d$y, names.arg = 1:30)
こんなサンプルデータで、nls()を使って、
m1 <- nls(y ~ (a * (lambda^x*exp(-lambda)/gamma(x+1)) + b),
start = c(a = 1, b = 1, lambda = 10), data = d)
とすると、
> max(predict(m1))
[1] 13.14048
> which.max(predict(m1))
[1] 9
9日目で最大値13のピークになることが分かります。
610:132人目の素数さん
12/09/14 21:05:08.72
windowsXP世代の4GBマシンで100万レコードオーダーのdataframeを
ggplot2で描画しようとするとメモリオーバーになってしまう
なんかうまい方法はないものか
611:132人目の素数さん
12/09/15 00:15:23.75
>>610
分割して描画すればどうなる?
ggplot2じゃないけど、例えばこんな風に。
> d <- data.frame(x = runif(100), y = runif(100))
> plot(d[1:25, ], xlim = range(d$x), ylim=range(d$y))
> points(d[26:50, ])
> points(d[51:75, ])
> points(d[76:100, ])
612:132人目の素数さん
12/09/15 09:17:37.47
>>611
どうもです
確かに仰る通り、::baseのplotならば可能です
後だしですんませんが
・見た目のキレイさ
(というか先進性というか凄いことやってそうに見せられるというか。。苦笑
・カテゴリカル変数20こ程度
・引き継ぎやデータ更新等を考えて
作図のためのデータハンドリングのコーディングは最少にしたい
・自分自身の興味w
のような趣旨でggplot2でやりたいのです
613:132人目の素数さん
12/09/15 20:06:17.90
>>610
32bit?64bit?
614:132人目の素数さん
12/09/15 21:09:24.15
>>613
32bitです
会社の端末なんで詳細は不明ですが
5年くらい前の型で家庭用PCです
Rは2.15.0でパッケージは最新です
ggplot2_0.9.2.1
615:132人目の素数さん
12/09/15 22:21:52.64
__ノ)-'´ ̄ ̄`ー- 、_
, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
616:132人目の素数さん
12/09/17 13:49:31.71
ggplotでも分割してできるでしょ。
それでも最後の描画の際にエラーになっちゃうかな?
617:132人目の素数さん
12/09/18 00:00:46.90
>>616
はい。
ggplot2オブジェクトにそうさをくわえることはできますが、
プロットするさいにメモリオーバーエラーとなってしまいます。
(プロットせずにggsaveしようとしてもおなじです)
618:132人目の素数さん
12/09/18 14:41:03.61
>>617
じゃあ、データを間引きするしか方法がないのでは?
そもそも100万レコードを視覚化するのに、
そのまま100万レコードが必要なのか?
100万からサンプリングして1万で図を描いても同じ図になる気がするぞ。
619:132人目の素数さん
12/09/18 23:07:04.27
RにはReduce見たいな機能はないのかな
620:132人目の素数さん
12/09/19 00:02:17.70
>>618
そういわれるとそうなのです
ただ、問題は>>617なので、なぜそうなるのか分かって、
そこだけ回避できるようになれればよいのですが・・・
621:132人目の素数さん
12/09/19 09:39:21.27
そもそも全部描画できたとして、それは見るに耐えるものなのか?
例えば散布図なんかだと100万点どころか、1万点ですら多すぎて見づらいから、適切に間引くのが普通だ。
622:132人目の素数さん
12/09/20 10:57:36.08
>>620
症状から考えて
ggplot2内部的に、
画面表示や画像ファイル保存などの描画時に、
データフレームをSVGみたいな描画用データに変換してから
その描画用データを参照して描画するんだと思う
だから、100万データを扱うことはできても、
グラフ描画(保存も含む)ができない。
しかも、データをどれだけ分割しようと
最終的に描画する際には、
そのグラフに使用する全描画用データを
同時にメモリに保持している必要があるから、
分割が意味をなさない。
だから、どうしても100万データ分使いたいんだったら、
メモリオーバーしない量のデータで一旦画像に保存して、
その画像同士を重ね合わせるみたいな方法をとるしかないかな。
画像処理の手間が必要になりますが。
あるいは、グラフ用のデータを
ダイナミックアロケーションできるような方法が
あるのか知りませんが、なければ作るとか……w
623:132人目の素数さん
12/09/20 16:26:54.47
>>622
そうだな。>>622の言うとおり、ベクタ構造を保持するからメモリ不足になる。
適当なインターバルでラスタ変換をかませればよろし。
png()で分割出力して、system("convert ...")で重ねる。
624:132人目の素数さん
12/09/20 22:19:32.83
>>622
>>623
なるほど頭の中が整理されました!
・データの分布を壊さずにデータを間引く関数を作る
・分割描画して最後にラスタデータを統合する関数を作る
・高スペックPCを導入する()
のどれかって感じですね!
ちょっと試してみるデス
625:625
12/09/21 00:01:09.50
√625 = 25
626:132人目の素数さん
12/09/26 20:01:39.27
質問です。
任意の行列xを縦に複数回並べたいです。
こんな感じで書いてみたのですが、
forを使わず作れますか、
rep関数だけで実現できないですか?
mat <- NULL
x <- matrix(1:9, 3, 3)
for(i in 1:5){
mat <- rbind(mat,x)
}
mat
627:132人目の素数さん
12/09/26 22:27:54.77
>>626
>rep関数だけで実現できないですか?
できる
ヒント:
> i <- 5; paste("rbind(", paste(rep("x", i), collapse = ","), ")")
[1] "rbind( x,x,x,x,x )"
628:132人目の素数さん
12/09/26 23:09:49.40
Reduce(rbind,lapply(1:5,function(x) matrix(1:9,3,3)))
629:132人目の素数さん
12/09/26 23:40:06.82
>>627-628 ありがとうございます\(^o^)/
630:132人目の素数さん
12/10/01 04:48:45.78
>>628
do.call(rbind,lapply(1:5,function(x) matrix(1:9,3)))
5回じゃなくてもっと沢山くっつけるならdo.callのほうが速いみたい
631:132人目の素数さん
12/10/01 23:26:00.72
Rってこれから主流になるんですか?
ビッグデータ界隈でR!R!R!騒がしいです。
632:132人目の素数さん
12/10/02 12:27:05.94
主流になるのではないかと言われているけど、必ずそうなるとは言い切れない。
でも使えておいて損はないと思うよ。
633:132人目の素数さん
12/10/02 15:05:16.56
>>631
ビッグデータって何GBくらい?
素朴に考えると、Rらしいプログラムの書き方で処理するときには、
データを全てPCのメモリ上に読み込まなければならない。
しかし、オラクルに格納されたデータが、
PC1台のメモリにスッポリ収まるとはとうてい考えられない。
634:132人目の素数さん
12/10/02 19:43:58.58
>>633
それは時代遅れ。大規模なデータ処理では、データを固定したまま
処理をおこなう処理系自体をデータのあるところに移動しないと間に合わない。
既に昨年、Oracle社はデータはRDBMS上においたまま Rのコードを
実行できる仕組みを提案してるよ。フロントエンドはRで、実行はRDBMSか、
おそらく Exadata という専用ハードの上で行うと思う。
URLリンク(blogs.oracle.com)
635:132人目の素数さん
12/10/02 20:20:33.97
>>634
なるほど、オラクルサーバがR(互換)インタプリタを内蔵しているというわけですか。
Rが凄いというよりもORACLEの商魂が凄い。
そういえば、DBMSや統計ソフトのベンダーが
「顧客のニーズを読めてませんでした」とか言ったらギャグになる。
636:132人目の素数さん
12/10/03 20:37:17.21
>>634
その手の話はOracleに限った話ではない
URLリンク(www.revolutionanalytics.com)
と言うより、Oracle使ってた人がRなんか使うのかね?
そういう人はSASとか使うような気がするが。
637:132人目の素数さん
12/10/03 22:48:32.44
>>636
うちはOracleとRを使ってる。会社のデータはOracleで管理してるが、
それを可視化したり、対話的に解析するのにRが便利。
両者はODBCデータソース経由でシームレスに繋がる。
確かにSASはいいんだけどライセンス料金が高いので使える人が
限られてしまうが、Rならそういうこと気にせずに済むのがいい。
ただしRはサポートが課題になりやすいけどね。
もしOracleが有償でもRのサポート提供するなら、それを評価する
企業ユーザもいるんじゃないかな?
638:132人目の素数さん
12/10/03 23:16:24.69
Rで分析が済ませるデータ量の会社はそれでもいいけど、そんな会社はDB側もAccessで十分そうね。
639:132人目の素数さん
12/10/03 23:33:39.40
Rでは社内で解析したものを環境丸ごと渡して
加工してもらうこともできるのかな?
640:132人目の素数さん
12/10/03 23:44:58.20
データサイエンティストとして経験を積むにはどの業界が良いのだろうか?
色々考えてみた。
SNS データ量が多い。分析前提でDBが設計してある。データドリブンが前提
銀行 顧客属性、預貯金データ保有、ローン情報
保険 顧客属性、病歴情報保有
クレジットカード 顧客属性、ローン情報、購買データ保有
SNSかクレジットカードだろうか。
641:132人目の素数さん
12/10/03 23:53:37.59
Tポイントカードの新会社だろ、JK!w
642:132人目の素数さん
12/10/03 23:56:05.36
POSデータがあれば、どこでもおk
643:132人目の素数さん
12/10/04 00:01:14.41
Tポイントカード、POSデータの情報量なんてたかが知れてると思うな。
644:132人目の素数さん
12/10/04 00:28:41.27
>>637
SASのライセンス料を気にしてOracleのライセンス料を気にしないのは謎だな
Oracleでまともにビッグデータを扱うと千万円の単位では済まないのに…
645:132人目の素数さん
12/10/04 15:32:50.43
企業のことは分からないが、
PostgreSQL + Rという組み合わせは論外なのかな?
646:132人目の素数さん
12/10/04 20:11:25.61
>>645
PostgreSQLはBSDライセンスで、RはGPLじゃなかったっけ?
言語処理系部分の流用は出来ないんじゃないの?
647:132人目の素数さん
12/10/04 21:31:10.07
>>644
Oracle は基幹系の投資に含めやすいし、実際に支払うライセンス料は
年間サポート料やコンサル費に比べれば大した金額じゃないと思う。
むしろコンサル費がべらぼうに高い。
その延長でゆくと、分析ツールはSASでもRでもいいが、こういう分析ツールを
活用できる社員を育成するのに金が掛かるし、企業での課題だと思う。
ちょっと外れてきたね。
648:132人目の素数さん
12/10/04 22:57:30.45
Postgre + R だと生データを直接処理(モデリング)できないでしょ。
それこそ、MapReduceみたいな処理の分散を自分で考えないといけない。
649:132人目の素数さん
12/10/05 00:20:41.39
>>626
x <- matrix(1:9, 3)
x[rep(1:3,5),]
650:132人目の素数さん
12/10/05 01:07:56.33
__ノ)-'´ ̄ ̄`ー- 、_
, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
651:132人目の素数さん
12/10/08 17:00:48.41
SNSの出身の人はビジネスセンスに欠ける気がする。
もしかしたら、それは旧時代的なビジネスセンスで、SNS出身の人のは新時代のものかもしれないけど。
・・・ないな。
652:132人目の素数さん
12/10/08 17:29:34.67
頭の古い人はいつでも置き去りにされる。
653:132人目の素数さん
12/10/08 17:43:54.24
統計解析全体がオカルトだというとらえ方もあるけどね。
> 活用できる社員を育成するのに金が掛かるし、企業での課題だと思う。
亀の甲羅を火にあぶる司祭たち……
654:132人目の素数さん
12/10/08 18:07:35.04
__ノ)-'´ ̄ ̄`ー- 、_
, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
655:132人目の素数さん
12/10/12 10:40:00.67
N行M列のXを
要素M個のリストにしたいです。
x <- matrix(1:9, 3)
x_list <- list(x[,1], x[,2], x[,3])
as.list(x)でやると要素9になってしまいます。
要素M個にしたい場合は、どうすればいいですか?
656:132人目の素数さん
12/10/12 11:49:23.96
できました!
split(x, col(x))
>知っているといつか役に立つ(?)関数達 - RjpWiki
(6) ベクトル、行列、データフレームをある性質で分割する、split(x,f)
657:132人目の素数さん
12/10/14 11:18:40.27
↓これ、apply系の関数でうまくできないですか?教えてください。
x = matrix(1:12, 3, 4)
y = c(2, 5, 10)
x[1,] + y[1]
x[2,] + y[2]
x[3,] + y[1]
658:132人目の素数さん
12/10/14 11:48:08.74
>>657
> x[1,] + y[1]
> x[2,] + y[2]
> x[3,] + y[1]
x[1:3,]+y[c(1,2,1)]
659:132人目の素数さん
12/10/15 13:56:05.47
>>657
これでもできる。xに対して縦にしたベクトルを横に走らせながら足し算するみたいな意味。
sweep(x, 1, y[c(1,2,1)], "+")
660:馬と鹿と豚さん
12/11/05 13:00:29.47
__ノ)-'´ ̄ ̄`ー- 、_
, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/
. | \ ∠イ ,イイ| ,`-' |
| l^,人| ` `-' ゝ | このスレは馬と鹿と豚ばかりね。
| ` -'\ ー' 人
| /(l __/ ヽ、
| (:::::`‐-、__ |::::`、 ヒニニヽ、
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
661:132人目の素数さん
12/11/09 15:34:45.80
これって、Rで描けますか?
URLリンク(homepage2.nifty.com)
回帰直線の例である、よく教科書に載ってる図で、
「誤差が正規分布」してる様子を表したいです。
確率密度関数のプロット図を横に複数個並べたいんです。
662:132人目の素数さん
12/11/09 15:48:43.41
これです。単回帰モデルの図をRで描けますか?
URLリンク(t2.gstatic.com)
663:132人目の素数さん
12/11/09 16:13:59.17
>>661
描ける。でもちょっと頭の体操が必要かも。
>>662
同上。でもオレならPGF/Tikzで描くかな。
URLリンク(www.texample.net)
664:663
12/11/09 17:14:42.51
時間があったので、コーディングしてみた。
RjpWikiと違って図を載せられないし、半角スペースは削除されるので、
わかりにくいかも知れない。
# サンプルデータ
dat <- data.frame(x = c(rnorm(50) - 2, rnorm(50), rnorm(50) + 2),
g = c(rep("x", 50), rep("y", 50), rep("z", 50)))
# 作図
d <- tapply(dat$x, dat$g, density)
plot(as.numeric(dat$g), dat$x, xlim = c(0, 4), axes = FALSE,
xlab="", ylab="x")
lines(d[[1]]$y + 1, d[[1]]$x)
lines(d[[2]]$y + 2, d[[2]]$x)
lines(d[[3]]$y + 3, d[[3]]$x)
axis(2)
axis(1, at = 1:3, labels = LETTERS[24:26])
あとはsegments()で適当に赤の横破線を引いてくれ
665:132人目の素数さん
12/11/09 21:12:18.68
>>664 おぉー!ありがとうございます!!
666:132人目の素数さん
12/11/28 20:53:30.87
初心者ですがロジットモデルを作る際に
Lapack routine dgesv:システムは正確に特異です という意味不明なメッセージが...
変数ごとの尺度が違いすぎると発生するってことで一部に1/100したりしてみたけど
変わらず出てしまう...「そのエラー文こんな場合に出てくるでー」みたいなのあれば教えて頂けるとありがたいです.
667:132人目の素数さん
12/11/28 21:07:45.01
ロジットモデルが何か知らないけど、
エラー文でググると、
>分散共分散行列の行列式が正定値では無いため
668:132人目の素数さん
12/11/28 21:27:27.31
>>667
ありがとうございます!
分散共分散行列、正定値か...初めての単語です.
調べてみようっと
669:132人目の素数さん
12/11/28 22:30:52.44
>>666
singularって単数と思っていたが、数学では「特異」なんだな。
勉強になった。
670:132人目の素数さん
12/11/29 22:21:50.04
>>669
singular matrixって、逆行列を持たない行列。つまり
1 2
2 4
とか、そういうやつじゃないの?
Octaveでそういうのをやると
octave-3.2.4.exe> A=[[1,2];[3,4]]
A =
1 2
3 4
octave-3.2.4.exe> inv(A)
ans =
-2.00000 1.00000
1.50000 -0.50000
octave-3.2.4.exe:> A=[[1,2];[2,4]]
A =
1 2
2 4
octave-3.2.4.exe> inv(A)
warning: inverse: matrix singular to machine precision, rcond = 0
ans =
Inf Inf
Inf Inf
671:132人目の素数さん
12/11/30 15:39:16.01
sortとprintとあわせて使えませんか?
672:132人目の素数さん
12/12/01 09:59:19.11
2012/12/01 10:00~
R研究集会 「データ解析環境Rの整備と利用」2012
URLリンク(live.nicovideo.jp)
673:132人目の素数さん
12/12/03 20:43:08.44
>>671
それは質問かい?
それとも上のどこかの書き込みの対する助言かい?
674:132人目の素数さん
12/12/04 10:40:04.46
すみません、質問です
id time sex
1 13 male
2 24 female
・・・
てな感じのデータ(population)を、timeでヒストグラムを書いた時にsexで色分けしたいのですが
基本グラフィックを使った方法で何か良いのは無いでしょうか?
ちなみにggplot2だと以下のコマンドで出来ますが、基本グラフィックで書く必要があります
ggplot(population, aes(time, fill=sex))+geom_histogram()
675:132人目の素数さん
12/12/04 11:26:35.26
>>674
hist()はグループ分けができません。
> set.seed(1234)
> a <- data.frame(time = round(rnorm(100)^2*10+5), sex = sample(as.factor(c("male", "female")), 100, replace = TRUE))
と適当なサンプルで、
> max(a$time)
[1] 70
なので、0から100まで10刻みで頻度を計算して棒グラフを書けばよいのでは。
> brks <- (0:5)*4
> b <- cbind(table(findInterval(a$time[a$sex == "male"], brks)), table(findInterval(a$time[a$sex == "female"], brks)))
> barplot(t(b), beside = TRUE, names.arg = brks[as.integer(row.names(b))])
参考まで。
676:132人目の素数さん
12/12/05 08:26:29.52
>>675
なるほど、histはグループ分けが出来ないのですね・・・
アドバイスに従って棒グラフで作成してみます
回答ありがとうございました
677:132人目の素数さん
12/12/18 04:57:50.10
リストの各要素を変数に代入したいです。
今は↓こんな感じでやってるのですが、要素数が増えると面倒で、
良いやり方があれば教えてください。
m = list(1, 2, 3, 4)
a = m[[1]]
b = m[[2]]
c = m[[3]]
d = m[[4]]
678:132人目の素数さん
12/12/18 07:38:18.90
lapply(1:4, function(k) assign(letters[k], m[[k]], envir = .GlobalEnv))
うーん、あんま短くないか。
679:132人目の素数さん
12/12/18 11:05:31.28
>>677
>>678が示すように、assignを使えばよいよ。
for()を使うならこんか感じ。
## mを適当に用意
m <- lapply(1:4,function(x){sample(month.name, 3)})
v.name <- letters[1:4] #変数名を準備
for(i in 1:length(v.name)) assign(v.name[i], m[[i]])
>>678
試さないで質問して申し訳ないけど、.GlovalEnvの指定は必須?
envirの指定を省略すれば.GlovalEnvになるのかなとと思って。
680:132人目の素数さん
12/12/18 14:51:39.01
>>678-679 できました。ありがとうございます!
681:132人目の素数さん
12/12/21 23:08:27.59
データフレームがあって、A列にコード、B列にファクター値が入っております。
このデータフレームをファクター値によって5分割したいのですが、
ループを使わない簡単な方法ありますでしょうか?
現在はquantile関数とforループを併用しております。
よろしくお願いいたします。
682:132人目の素数さん
12/12/22 05:08:48.15
>>681
>ファクター値
どういう意味?
因子型変数が内部で保持している実体の整数型の値のこと?
例を示してくれないと、その説明ではどうしたいのか分からない。
683:132人目の素数さん
12/12/22 06:30:38.17
>>681
split(x, x$B)
ってこと?
684:681
12/12/22 09:52:42.80
>>682,>>683
ありがとうございます。
説明が悪くて申し訳ありません。
ファクター値は因子ではありません。
只の実数値の意味です。
DF
CODE DATA
"A" 1
"B" 2
"C" 3
"D" 4
"E" 5
と単純なデータフレームを考えた場合、
DATAの大きさでデータフレームを分割し5個のデータフレームにしたいのです。
現状はforループとquantile(DF$B, prob = i / 5)という関数を用いて分割している次第です。
よろしくお願いいたします。
685:132人目の素数さん
12/12/22 12:16:27.28
>>684
意味が全く分からないのはオレだけか?
そもそもDF$Bやiはどこから出てきたんだ。
data.frameの要素にdata.frameを入れた階層構造なのか?
もしかすると、こういうことか?
> DF <- data.frame(CODE = sample(LETTERS, 100, replace = TRUE), DATA = sample(1:5, 100, replace = TRUE))
というDFがあったとして、
> lapply(unique(DF$DATA), function(x){DF[DF$DATA == x, ]})
とすると5つのデータフレームをもつリストが出来る。
686:681
12/12/22 12:33:52.37
>>685
申し訳ありません。DF$BではなくDF$DATAです。
ご提示していただいた例ですとDATAが整数の場合には正しく分割できるのですが、
実際には整数ではなく実数値です。
例えば、
DF <- data.frame(rand)
colnames(DF) <- c("a", "b", "c")
というデータフレームを作成した場合、DF$bの大きさで任意の分位に分割したいのです。。。。
687:132人目の素数さん
12/12/22 13:38:29.27
>>686
まだ意味が分からないorz
回答する側に憶測に憶測を重ねさせる質問の仕方はどうなのか、
後出しがガシガシ出てくる質問の態度はいかがかと思うが、
丁寧な口調なので、もう1度だけ「想像」した範囲で答える。
> DF <- data.frame(a = runif(100), b = runif(100), c = runif(100))
というDFがあったとして、DF$bを任意の分位、たとえば、0.1と0.3と0.5と0.9で区切って5分割したいとする。
> i <- findInterval(DF$b, c(0.1, 0.3, 0.5, 0.9))
> lapply(unique(i), function(x){DF$b[x == i]})
これで5分割されたデータのリストが得られる。
データフレーム構造を保持したいという話なら、
> lapply(unique(i), function(x){DF[x == i, ]})
これでも、これが質問の意図と異なるなら、他の人にパス。
688:687
12/12/22 13:51:45.59
unique(i)だと区分の順番が気になるので、順番通りにするように修正
> lapply(0:max(i), function(x){DF$b[x == i]})
および
> lapply(0:max(i), function(x){DF[x == i, ]})
689:132人目の素数さん
12/12/22 20:11:43.37
改行、空白がなくて読みにくコードを
見やすく自動で整形する方法ってありますか?
他の言語だと整形ツールがあるんだけど
Rにもあるのかな
690:132人目の素数さん
12/12/22 23:19:32.32
>>689
外部ツールとしてはないけど、そういう関数もある(名前は忘れた)。
691:681
12/12/23 01:16:13.76
>>687
ありがとうございます。
分位は等分位です。
quantileで分位点を求めて、教えていただいた方法で無事いけました。
質問の仕方が悪かったようで申し訳ありませんでした。
以後気を付けたいと思います。
本当にありがとうございました
692:132人目の素数さん
12/12/23 20:34:14.28
>>689
URLリンク(github.com)
693:令嬢
12/12/23 23:13:41.87
__ノ)-'´ ̄ ̄`ー- 、_
, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
694:132人目の素数さん
12/12/25 01:22:28.37
各位に使用できる数字(または文字)に制限がある
n桁の整数(文字列)を生成したい。
1桁目: 1, 2
2桁目: 4, 5, 6
3桁目: 7, 8
この場合だと 2*3*2 = 12 通りの整数が作れます。
forを3重にすればできるのですが、このやり方は避けたい。
n桁になっても対応できるコードを書きたいです。
いいやり方、教えてください。
695:132人目の素数さん
12/12/25 10:23:00.30
>>694
またまた説明不足で不明瞭な質問が来た。同じ人か。
例では、3桁の12種類全ての整数(文字列)を得たいのか、
それとも1つの3桁の整数(文字列)を得たいのか、
判然としない。
後者と想定して、例示すると、
a <- list()
a[[1]] <- 1:2
a[[2]] <- 4:6
a[[3]] <- 7:8
というリストがあった場合、
> paste(sapply(a, sample, 1), collapse = "")
[1] "247"
aの要素数がn個でも(つまり、n桁でも)同じ。
696:132人目の素数さん
12/12/25 21:10:27.10
前者です。
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 1 4 8
[3,] 1 5 7
[4,] 1 5 8
[5,] 1 6 7
[6,] 1 6 8
[7,] 2 4 7
[8,] 2 4 8
[9,] 2 5 7
[10,] 2 5 8
[11,] 2 6 7
[12,] 2 6 8
697:695
12/12/25 21:25:57.68
>>696
それなら、expand.grid()を再帰的に使えば良い。
入れ子にするのは面倒なので二項演算子を定義すると、
> "%+%" <- function(x, y) apply(expand.grid(x, y), 1, paste, collapse = "")
> a[[1]] %+% a[[2]] %+% a[[3]]
[1] "147" "247" "157" "257" "167" "267" "148" "248" "158" "258" "168" "268"
あとはRecall()を使って、これを一般化すれば良い。
> f696 <- function(x) { f <- function(i){ if(i > 0) return(Recall(i - 1) %+% x[[i]])
+ else return("")}
+ return(f(length(x)))
+ }
> f696(a)
[1] "147" "247" "157" "257" "167" "267" "148" "248" "158" "258" "168" "268"
次に質問するときは、最初から>>696のように書いた方が良いよ。
または、
> forを3重にすればできるのですが、
この具体的なコードを書くとか。抽象的に説明すると、解釈の余地に幅が生まれる。
698:132人目の素数さん
12/12/25 21:29:26.76
>>697 親切にありがとうございます。精進します!
699:695
12/12/25 21:31:46.70
あぁ、すまない。
n桁の整数は連結させるのではなく、
桁をばらばらにして行列にしたかったのか。
それなら話はもっと簡単だ。
pasteの処理をやめれば良い
700:132人目の素数さん
12/12/25 22:31:04.88
expand.grid(a)
(function() as.matrix((expand.grid(a)->x)[do.call(order, x),]))()
701:132人目の素数さん
12/12/26 09:37:32.22
>>700
あぁ、しまった。expand.grid()は3次元次元でも使えたのか。
>>700さんの別解。rev()を2重に使う。
as.matrix(rev(expand.grid(rev(a))))
702:令嬢
12/12/26 21:17:40.81
__ノ)-'´ ̄ ̄`ー- 、_
, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/
. | \ ∠イ ,イイ| ,`-' |
| l^,人| ` `-' ゝ | このスレには馬と鹿と豚さんしかいないのね。
| ` -'\ ー' 人
| /(l __/ ヽ、
| (:::::`‐-、__ |::::`、 ヒニニヽ、
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
703:132人目の素数さん
12/12/26 23:44:03.23
>>701
revの二重使いは柔軟な思考ですね。参考になりました。
704:狢 ◆yEy4lYsULH68
12/12/27 09:03:34.27
狢
>増田哲也こそ笑い者。
>俺が逮捕されて懲戒免職させる日本こそ沈めって、一発逆転をねらっている愚民そのもの。
>
705:132人目の素数さん
12/12/29 23:41:13.98
データフレームにあるQ01, Q02, Q03, Q04...というような連番の変数って、分析の際にまとめて指定することはできないのでしょうか。
SASでQ01-Q50などとやるようなことをしたいのですが、方法がわかりません。ご存知の方、お教えください。
50項目で主成分分析をしようなどという場合を考えると、気が遠くなります。
706:132人目の素数さん
12/12/30 07:20:47.80
URLリンク(knowledge-bank.org)
707:132人目の素数さん
12/12/30 08:39:23.19
>>705
outcome ~ .
って指定するとすべての変数が入る
708:132人目の素数さん
12/12/30 11:33:43.75
>>705
できるけど、"Q01-Q50"のような記法ではできない。
>>707が助言するようにまるごと入れることもできるし、
paste()とas.formula()をつかって長いformulaを作成することもできる。
formulaのヘルプにある例
> xnam <- paste0("x", 1:25)
> (fmla <- as.formula(paste("y ~ ", paste(xnam, collapse= "+"))))
y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 +
x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19 + x20 + x21 +
x22 + x23 + x24 + x25
709:132人目の素数さん
12/12/30 12:25:38.54
>>707,708
ありがとうございます。
これで、エクセルのオートフィルで変数リスト作成してRのコンソールに貼り付ける作業から解放されます。
710:132人目の素数さん
12/12/30 14:53:50.70
あ
711:132人目の素数さん
12/12/30 14:55:00.08
私はR言語で学習をしている初心者です。
その中で、irisデータを用いてコマンドの学習をしているのですがエラーが出てしまい先に進めなくなってしまいました。
以下にコマンドを載せますものが私の用いたものです。
library(rpart)
library(adabag)
data <- iris
ndata <- nrow(data)
#乱数指定
set.seed(101)
#学習データ(data.learn)とテストデータ(data.test)に分ける
ridx <- sample(ndata, ndata * 0.5)
data.learn <- data[ridx,]
data.test <- data[-ridx,]
#3-fold crossvalidation、弱識別器の数を10とし、学習データに対しboostingを行ったものをdata.adaCvに代入
data.adaCv <- boosting.cv(Species ~ .,data = data.learn,v=3, mfinal = 10)
#テストデータに学習データを照らし合わせる。
resultPredict <- predict(data.adaCv, newdata = data.test, type="class")
というコマンドですが「predict」を行った際に
以下にエラー UseMethod("predict") :
'predict' をクラス "character" のオブジェクトに適用できるようなメソッドがありません
というエラーが出てしまい、ネットや参考文献を見てもわからず投稿させていただきました。
もしこのエラーの解決方法がお分かりのかたがいらっしゃいましたらよろしくお願いします。
712:695
12/12/30 20:21:19.02
>>711
>以下にエラー UseMethod("predict") :
>'predict' をクラス "character" のオブジェクトに適用できるようなメソッドがありません
分かるも何も、書いてあるままだよ。
> class(data.adaCv)
[1] "list"
boosting.cv()は、predictメソッドをもつクラスを吐かず、単純にlistクラスを吐く。
それだけの話。
713:132人目の素数さん
12/12/30 20:22:36.64
>>712
名前欄にゴミが入ったorz
714:132人目の素数さん
12/12/30 23:08:32.14
>>712さん>>711です。回答ありがとうございます。
実行してみたところおっしゃたように"list"と出力されました。
ということはboosting.cvで得られた変数(data.adaCv)を用いての
predictはできないということでしょうか?
また、もしできるのであればそのコマンドと使用例を教えていただきたいです。
宜しくお願いします。
715:132人目の素数さん
12/12/31 15:27:18.84
__ノ)-'´ ̄ ̄`ー- 、_
, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/
. | \ ∠イ ,イイ| ,`-' |
| l^,人| ` `-' ゝ | このスレには馬と鹿と豚さんしかいないのね。
| ` -'\ ー' 人
| /(l __/ ヽ、
| (:::::`‐-、__ |::::`、 ヒニニヽ、
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
716:132人目の素数さん
13/01/02 11:10:09.30
ビギニングス to Rって読んだけど
プログラミング言語の解説というかRをアプリケーションとしてみた解説って感じで
言語的なことはほとんど勉強になりませんでしたね。
やっぱ俺はS言語の本読むべきでしたね。
717:132人目の素数さん
13/01/04 09:40:38.25
>>716
URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)
718:132人目の素数さん
13/01/04 10:07:16.37
>>714
Rjpwikiの方に書いたからもういいと思うのだけど、念のため。
boosting.cvの中身は見た?
bootsting()とpredict.boosting()を中で使っているよね。
> boosting.cv
function (formula, data, v = 10, boos = TRUE, mfinal = 100, coeflearn = "Breiman",
control)
{
vardep <- data[, as.character(formula[[2]])]
n <- length(vardep)
if (v > n)
stop(" v should be in [2, n]")
if (v < 2)
stop(" v should be in [2, n]")
predclass <- rep("O", n)
for (i in 1:v) {
test <- v * (0:floor(n/v)) + i
test <- test[test < n + 1]
fit <- boosting(formula, data[-test, ], boos, mfinal,
coeflearn, control = control)
fit.predict <- predict.boosting(fit, data[test, ])
predclass[test] <- fit.predict$class
cat("i: ", c(i, date()), "\n")
}
tabla <- table(predclass, vardep, dnn = c("Predicted Class",
"Observed Class"))
error <- 1 - sum(predclass == vardep)/n
output <- list(class = predclass, confusion = tabla, error = error)
}
<environment: namespace:adabag>
このfit.predictが欲しいなら、自分でbooting.cv()をコピーして編集すればよい。
そうじゃないなら、何をしたいのか、もっとはっきり伝えること。
719:132人目の素数さん
13/01/05 03:55:18.11
>>716
Rノウハウ本の購入層はやりたい解析があってそこまでたどり着ければいい
って人が大多数なんじゃないかな、んでそれにあわせた内容になってると
+αを求める人は多くは無いと思う
720:132人目の素数さん
13/01/05 12:25:03.16
<スプライン補間:yからxを予測する方法>
質問です。
x<-c(1,2,3,4,5,6)
y<-c(1,4,9,7,6,8)
というデータがあったとして、
sp<-smooth.spline(x,y)
predict(sp,x=2.5)
とすると、xが2.5のときのyの値は下記のように予測できます。
$x
[1] 2.5
$y
[1] 6.923206
逆にyからxを求める方法がお分かりの方、いらっしゃいましたらお教えください。
721:132人目の素数さん
13/01/05 14:02:30.39
>>720
stats:::predict.smooth.spline.fitにざっと目を通した限りは、
できなさそうだけど。
GAMFIT (URLリンク(lib.stat.cmu.edu))の中までは読んでいない。
sp$fitの中身を使って数学的に解くか、xを細かい間隔でpredict()に与えて、
与えられたyに最も近いものを選ぶしかなさそうだが、
ちゃんとした識者に答えてもらった方がよいかも。
後者なら、
predict.y <- function(y){
x0 <- c(1, 2, 3, 4, 5, 6)
y0 <- c(1, 4, 9, 7, 6, 8)
sp <- smooth.spline(x0, y0)
i <- seq(from = min(x0), to = max(x0), by = 0.0001)
Y <- predict(sp, i)
j <- which.min((Y$y - y)^2)
return(list(y = y, x = i[j], fitted = Y$y[j]))
}
こんな感じでよいのでは。
> predict.y(2.345)
$y
[1] 2.345
$x
[1] 1.4487
$fitted
[1] 2.345004
722:132人目の素数さん
13/01/05 14:47:31.66
__ノ)-'´ ̄ ̄`ー- 、_
, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
723:132人目の素数さん
13/01/05 16:46:53.71
>721
ありがとうございました。参考になりました。
724:132人目の素数さん
13/01/05 20:24:09.52
__ノ)-'´ ̄ ̄`ー- 、_
, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/
. | \ ∠イ ,イイ| ,`-' |
| l^,人| ` `-' ゝ | このスレには馬と鹿と豚さんしかいないのね。
| ` -'\ ー' 人
| /(l __/ ヽ、
| (:::::`‐-、__ |::::`、 ヒニニヽ、
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
725:132人目の素数さん
13/01/07 16:01:51.28
>>716
いまさらだけどビギニングス ガイド イン Rのミススペルな。
726:132人目の素数さん
13/01/07 18:48:16.16
>>725
URLリンク(www.amazon.com)
これのことか?
でも「ビギニングス ガイド イン R」じゃないぞ。
727:132人目の素数さん
13/01/09 09:49:00.54
またミスすぺるブチこみました。
正確には
ビギニングス ガイド イン R
でした。
728:132人目の素数さん
13/01/11 23:37:12.84
以下のようなデータフレームを仮定
コード 日付1 日付2 日付3 データ1 データ2 データ3
0001 201201 201103 201003 52 33 34
0002 201203 NA NA 22 NA 3
0003 201103 201001 200901 32 2 73
0004 201003 200905 200804 98 87 88
0005 NA NA NA NA NA NA
0006 201105 201102 201009 NA 32 55
日付XとデータXが対応
日付1>日付2>日付3となっている
この時、日付が201101よりも大きい日付に対応するNAでないデータを取得したい
即ち望まれる出力は以下の通り
コード 日付 データ
0001 201201 52
0002 201203 22
0003 201103 32
0004 NA NA
0005 NA NA
0006 201102 32
このように取得したい場合どのような操作をすればよいでしょうか?
実際には数千のコードがあるのでループで一行ずつ回すのはあまり現実的ではありません。
よろしくお願いします
729:132人目の素数さん
13/01/12 03:32:35.10
>>728
宿題じゃないよね?
> a <- scan(text="0001 201201 201103 201003 52 33 34
+ 0002 201203 NA NA 22 NA 3
+ 0003 201103 201001 200901 32 2 73
+ 0004 201003 200905 200804 98 87 88
+ 0005 NA NA NA NA NA NA
+ 0006 201105 201102 201009 NA 32 55")
Read 42 items
> b <- data.frame(t(matrix(a, ncol = 6)))
> names(b) <- c("コード", paste0("日付", 1:3), paste0("データ", 1:3))
で、ヒントは次の通り。
> m <- ((b[, 2:4] > 201101) & (b[, 2:4] & b[, 5:7])) * b[, 2:4]
> m[(m == 0)] <- NA
> i <- apply(m, 1, which.max)
> unlist(sapply(1:length(i), function(j){ifelse(length(i[j][[1]]) == 0, NA, (b[j, 5:7])[i[j][[1]]])}))
[1] 52 22 32 NA NA 32
> unlist(sapply(1:length(i), function(j){ifelse(length(i[j][[1]]) == 0, NA, (b[j, 2:4])[i[j][[1]]])}))
[1] 201201 201203 201103 NA NA 201102
730:132人目の素数さん
13/01/13 13:37:10.99
正規分布の乱数を作って、確率密度(面積)の合計が1になるのを
確認したいのですが、↓だと何故か2になってしまいます。
どこがダメなんだしょう?
x = rnorm(500)
hist(x, prob=T)
sum(hist(x, prob=T)$density)
731:132人目の素数さん
13/01/13 13:52:12.00
>>730
乱数の分散を変えてみると、理解出来るのでは?
> set.seed(1234); sum(hist(rnorm(500, sd = 2), prob = TRUE)$density)
[1] 1
> set.seed(1234); sum(hist(rnorm(500, sd = 5), prob = TRUE)$density)
[1] 0.2
> set.seed(1234); sum(hist(rnorm(500, sd = .1), prob = TRUE)$density)
[1] 20
732:132人目の素数さん
13/01/13 15:13:55.16
>>731
わからないよ (´・ω・`)
sum(hist(x, prob=T)$density)
と
sum(hist(x, prob=T)$count/500)
は同じになると思ったんだけど、違うってことですかね??
733:132人目の素数さん
13/01/14 13:24:07.24
>>732
730 の最後の式では、確率密度の積分 ∫f(x) dx = 1 の dx の部分が
抜けてしまっています。
hist を用いる場合、dx に相当する値は
diff(hist(x, prob=T)$breaks) で求めることができます。
x <- rnorm(500)
h <- hist(x, prob=T)
sum(h$density * diff(h$breaks))
734:132人目の素数さん
13/01/14 22:54:04.42
>>733 理解できました!
ありがとうございます!
735:132人目の素数さん
13/01/16 12:15:17.92
質問失礼します
言語を英語にすると、立ち上げた際のメッセージなどはきちんと英語になるのですが、
cor.test()などの関数を実行すると出力が日本語メッセージでかえってきます
日本語のwinOSでRの返答を完全に英語にする方法をどなたかご存知ないでしょうか?
ちなみに↓サイトの起動アイコンカスタマイズの方法で英語化しています
URLリンク(minato.sip21c.org)
736:132人目の素数さん
13/01/16 12:41:27.37
>>735
妙な挙動ですね。WindowsだとLANG=Cがどこかで強制的に書き換えられるのでしょうか。
Sys.getenv()で、メッセージが日本語になる前後でLANGやLC_ALLを確認してみてはどうでしょうか。
LANGを確認するには、Sys.getenv("LANG")とすればOKです。
なお、メッセージの言語を指定する環境変数はLC_MESSAGESです。
環境変数によるローケルの管理を知っておいても損はないと思います。
例えば、URLリンク(www.itmedia.co.jp)
の「環境変数の階層」とかに目を通すとか。
737:736
13/01/16 12:54:26.20
追記。
URLリンク(www.itmedia.co.jp)
を読んで思い出したが、昔、起動アイコンに、LANG=Cじゃなくて、language=enをつけていた。
「R language=en」でググるとCRANのR for Windows FAQがヒット。
URLリンク(cran.r-project.org)
... if you want to ensure that menus and messages are in (American) English, LANGUAGE=en.
とか、
You can ensure that R uses English messages by appending LANGUAGE=en to the shortcut
you use to start R, or setting it in the Rconsole file.
って書いてあるよ。FAQに。
738:132人目の素数さん
13/01/16 23:32:51.99
>>729
遅くなりましたがありがとうございました。
無事動作しました。
739:728
13/01/16 23:41:01.80
すいません。
再び質問です。
横型ではなく縦型の場合はいかがでしょうか?
以下のようなデータフレームを仮定します
コード 日付 データ
0001 20120101 332
0001 20120111 542
0002 20120201 5554
0002 20120301 52334
0002 20120511 15234
0003 20121101 35234
0003 20121201 NA
0004 20120501 75234
0005 20120601 NA
各コードに対してデータがNAでない日付が最大の値を取得したいのです。
NAしかない場合にはその値を取得します。
上記の場合以下の値が期待されます。
コード 日付 データ
0001 20120111 542
0002 20120511 15234
0003 20121101 35234
0004 20120501 75234
0005 20120601 NA
ヒントだけでも結構ですのでよろしくお願いいたします。
740:132人目の素数さん
13/01/17 00:37:07.40
mac版のRでの質問、失礼します。
ローカルに保存したCSVファイルではなく、直接ダウンロード、読込みをするファイルの文字化けを解消したいのですが、
エンコードを変える記述では上手くいきません。
ご教示いただけないでしょうか?
例)
url.data <- "URLリンク(maxis.muam.jp)
eMAXIS <- read.table(url.data, sep=",", stringsAsFactor = FALSE)
741:132人目の素数さん
13/01/17 14:18:27.23
>>740
fileEncoding = "SJIS"
オプションとかではダメってこと?
742:132人目の素数さん
13/01/17 14:25:14.37
>>739
plyrにあるddply()でIDで分割してwhich.max()で日付が最大のところのindexをとって、その場所の数字を取ればいいかな。
NAの処理を条件分岐を使わないでやるなら、ID日付でソートしたうえで、ddply()の中でzooのna.locf()を使えばいいか?
結構重くなってしまうかも。
743:132人目の素数さん
13/01/17 19:30:55.74
__ノ)-'´ ̄ ̄`ー- 、_
, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/
. | \ ∠イ ,イイ| ,`-' |
| l^,人| ` `-' ゝ | このスレは馬と鹿と豚さんばかりね。
| ` -'\ ー' 人
| /(l __/ ヽ、
| (:::::`‐-、__ |::::`、 ヒニニヽ、
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
744:132人目の素数さん
13/01/17 22:40:29.47
>>742
ありがとうございます。
ddplyで無事いけました。
20万行程度のデータフレームですが、数秒で完了するので問題ありませんでした。
745:132人目の素数さん
13/01/18 01:06:24.60
>>741
すみません。勘違いしてました。
オプションでいけました。
ご指摘ありがとうございます。
746:132人目の素数さん
13/01/26 23:13:16.48
RMySQLがインストールできず困っています。
> install.packages("RMySQL", type="source")
Installing package(s) into ‘D:/program_files/R-2.15.2/library’
(as ‘lib’ is unspecified)
URL 'URLリンク(cran.rstudio.com)' を試しています
Content type 'application/x-gzip' length 165363 bytes (161 Kb)
開かれた URL
downloaded 161 Kb
* installing *source* package 'RMySQL' ...
** パッケージ 'RMySQL' の解凍およびMD5サムの検証に成功しました
checking for $MYSQL_HOME... D:program_filesMySQL
MYSQL_HOME is set but does not point to a directory
ERROR: configuration failed for package 'RMySQL'
* removing 'D:/program_files/R-2.15.2/library/RMySQL'
Warning in install.packages :
命令 'D:/PROGRA~1/R-215~1.2/bin/x64/R CMD INSTALL -l "D:/program_files/R-2.15.2/library" C:\Users\<<User>>\AppData\Local\Temp\RtmpmAoBu3/downloaded_packages/RMySQL_0.9-3.tar.gz' の実行は状態 1 を持ちました
Warning in install.packages :
installation of package ‘RMySQL’ had non-zero exit status
The downloaded source packages are in
‘C:\Users\<<User>>\AppData\Local\Temp\RtmpmAoBu3\downloaded_packages’
が出て、MYSQL_HOMEの値がダメなんだと思いますが、mysql自体にはパスが通るので合ってるはずです。どこが悪いんでしょうか?
747:132人目の素数さん
13/01/27 08:48:14.43
>>746
これってソースしかないの?
748:746
13/01/27 23:38:33.32
ごめんなさい。自己解決しました
やっぱりMYSQL_HOMEの値がおかしかったようです。
749:132人目の素数さん
13/02/01 10:37:40.43
win版のRについて質問があります
Rjpwikiの時間の数値変換を、使っているデータの時間フォーマットにあわせてアレンジしてるんですが
date2num <- function(x, ...) {
.day <- as.numeric(substr(x,10,11))
.hour <- as.numeric(substr(x,13,14))
.minute <- as.numeric(substr(x,16,17))
.second <- as.numeric(substr(x,19,20))
.year <- as.numeric(substr(x,2,5))
.mon <- as.numeric(substr(x,7,8))
a <- .day - 1
b <- .year - 1970
c <- 1
if(.mon==2) c <- 31
else if(.mon==3) c <- 59
else if(.mon==4) c <- 90
else if(.mon==5) c <- 120
else if(.mon==6) c <- 151
else if(.mon==7) c <- 181
else if(.mon==8) c <- 212
else if(.mon==9) c <- 243
else if(.mon==10) c <- 273
else if(.mon==11) c <- 304
else if(.mon==12) c <- 334
else if(.mon==1) c <-0
else m <-1
750:132人目の素数さん
13/02/01 10:40:10.94
file<-sprintf("%03d",.mon)
cat(file) # 画面に出力
cat("\n") # 改行コード
file<-sprintf("%03d",a)
cat(file) # 画面に出力
cat("\n") # 改行コード
file<-sprintf("%03d",c)
cat(file) # 画面に出力
cat("\n") # 改行コード
c<-c+a
file<-sprintf("%03d",c)
cat(file) # 画面に出力
cat("\n") # 改行コード
return(b*31556926+c*86400+a*86400+.hour*3600+.minute*60+.second)
}
これに" 2012/11/30 16:50:00"のような時刻データを
date,sum
2012/12/05 20:30:00,17012
2012/12/05 20:30:00,16512
2012/12/05 19:53:00,16512
2012/12/05 19:53:00,16012
以上のようなデータフレームで入力しているのですが
月を調べているif文が1度しか動きません
if文が問題なのだと思っているのですがどう直せばよいものでしょうか
751:132人目の素数さん
13/02/01 11:19:52.70
>>750
よく分からない。date2numの引数はxだけなのに、なんで、dateとsumのデータフレームを入れるの?
それに、月を7文字目と8文字目ってしているけど、6文字目と7文字目じゃないの?
> date2num("2012/12/05 20:30:00")
以下にエラー if (.mon == 2) c <- 31 else if (.mon == 3) c <- 59 else if (.mon == (from #11) :
TRUE/FALSE が必要なところが欠損値です
[snip]
再現できるように質問しようよ。
もっと言えば、
> as.numeric(as.POSIXlt("2012/12/05 20:30:00"))
[1] 1354707000
とかを使うのは嫌いなの?
752:132人目の素数さん
13/02/01 12:21:01.54
すみません 単純に使い方が分からず力技でどうにかやってみた感じだったのでこういう形になっていました
自分の力が及ばないせいでデータファイルを作るとき時刻データの前にどうしても消えない半角スペースがあって
それで6番目と7番目ではなく7番目8番目になっていますorz
それと
> as.numeric(as.POSIXlt("2012/12/05 20:30:00"))
[1] 1354707000
これをみて目からうろこでした、自分のやってたことの馬鹿さ加減にあきれました
御助言ありがとうございました
753:132人目の素数さん
13/02/01 13:26:36.91
>>752
>時刻データの前にどうしても消えない半角スペース
関数を自作するレベルなのになぜw
例えば、
> (a <- c(" 2013-02-01 13:21:17", "2013-01-01 09:21:17", " 2013-03-01 11:21:17"))
[1] " 2013-02-01 13:21:17" "2013-01-01 09:21:17" " 2013-03-01 11:21:17"
こんな感じで、時刻前に空白があったりなかったりするなら、
> library(stringr)
> str_trim(a)
[1] "2013-02-01 13:21:17" "2013-01-01 09:21:17" "2013-03-01 11:21:17"
これでよいのでは?
オプションなしでは、前後の空白を取り除くから、前だけならそのように指定する。
754:132人目の素数さん
13/02/01 13:49:46.73
なるほど、Rの方でtrimするって手もありましたね
なにからなにまでありがとうございます
755:132人目の素数さん
13/02/01 14:11:14.62
>>754
>Rの方でtrimするって手もありましたね
別にRの外でも、どこででも空白を削除すれば良いと思う。
例えば下記のようなcsvがあったら、
$ cat tmp.csv
"A","B","C"
"BE DAC","Jan",0.35
"AC BDE","Feb",0.34
" EBACD","Mar",0.66
" DABEC","Apr",0.44
"BEA CD","May",0.84
"CDA EB","Jun",0.3
"EDCAB ","Jul",0.59
"CBEA D","Aug",0.53
"ECDA B","Sep",0.44
"ABDCE ","Oct",0.33
$ sed -e 's/¥" ¥([^ ,]*¥)/¥"¥1/g' tmp.csv
"A","B","C"
"BE DAC","Jan",0.35
"AC BDE","Feb",0.34
"EBACD","Mar",0.66
"DABEC","Apr",0.44
"BEA CD","May",0.84
"CDA EB","Jun",0.3
"EDCAB ","Jul",0.59
"CBEA D","Aug",0.53
"ECDA B","Sep",0.44
"ABDCE ","Oct",0.33
とすると3,4行目にあった文字列前の空白を消せる。
756:132人目の素数さん
13/02/02 10:13:07.27
Win版Rで質問失礼します
URLリンク(cse.naro.affrc.go.jp)
上記サイトの複数の列に対してソートを行う場合は関数を使用して
同じように
a b c
11 1 2 11
12 1 1 12
9 2 4 9
10 2 3 10
7 3 6 7
8 3 5 8
5 5 8 5
6 5 7 6
4 7 9 4
1 9 12 1
2 9 11 2
3 9 10 3
というデータフレームをaを昇順に整列しaで同じものがあった場合はcの小さいものを上にするようにしたいのですが
In Ops.factor(mmm, each) : < 因子に対しては無意味です というエラーが出てうまくいきません
どこが問題でしょうか?
757:132人目の素数さん
13/02/02 10:18:28.45
データフレーム訂正します
a b c
1 2 11
1 1 12
2 4 9
2 3 10
3 6 7
3 5 8
5 8 5
5 7 6
7 9 4
9 12 1
9 11 2
9 10 3
です
実際にはデータフレーム名test1で
sortlist <- order(test1$a, pmax(test1$a,test1$c))
test1[sortlist,]
以上に実行しました
758:756,757
13/02/02 10:45:26.08
すいません 自己解決しました
759:132人目の素数さん
13/02/02 11:01:54.12
>>758
複数カラムをキーにしたソートなんて考えたことがなかった。
いったいどんなときに必要になるの?
# 表計算ソフトのように「見せる」目的なら理解できるけど。
760:132人目の素数さん
13/02/02 11:09:52.57
順位相関などを見るときにそういう処理をする可能性はあると思う
761:132人目の素数さん
13/02/02 12:03:35.44
再び質問失礼します
a,b
3,5
2,3
2,2
2,1
1,3
1,1
a列は必ず降順になっているときに
b列が降順になっていないとき
この例では5行目1,3ですが
これを削除したいのですが 関数化して自動で判別して削除したいです
どのようにしたら良いでしょうか
762:132人目の素数さん
13/02/02 12:16:56.00
複数の列でのソートは
doByパッケージのorderBy()が使いやすい。
763:132人目の素数さん
13/02/02 12:36:52.26
>>761
pmax()というのを初めて知った。
bの列を一行下げて頭にInfをいれたものをcとしてデータフレームにいれる、bとcに対してpmax()して、結果をdとしてデータフレームにいれる。dがbと一致しているところを落とす。
でどうだろう?
764:761
13/02/02 13:18:11.28
>>763
御助言ありがとうございます
しかし当方最近Rを使いだしたもので何をどうすればいいのか分かりません・・・
あつかましいのですが具体的にどんな感じに書けばいいでしょうか
765:132人目の素数さん
13/02/02 14:23:56.55
>>764
dat = read.csv(text = "a,b
3,5
2,3
2,2
2,1
1,3
1,1")
dat
dat$c = c(Inf , head(dat$b, -1))
dat
with(dat, pmax(b, c))
dat$d = with(dat, pmax(b, c)) == dat$c
dat
dat[dat$d,]
を想定。関数化されてないけど。もっと大きい例で動くはチェックしていない。
766:132人目の素数さん
13/02/02 15:20:57.47
>>763さんの解答にインスパイアされた別解。
> dat = read.csv(text = "a,b
+ 3,5
+ 2,3
+ 2,2
+ 2,1
+ 1,3
+ 1,1")
> dat[c(TRUE, diff(dat$b) < 0), ]
a b
1 3 5
2 2 3
3 2 2
4 2 1
6 1 1
767:132人目の素数さん
13/02/02 15:35:34.61
>>766の追記。
bが例えば、10, 8, 6, 9, 8, 5とかになっていると、
>>766の方法を1回だけ適用したのでは通用しない。
> d2
a b
1 3 10
2 2 8
3 2 6
4 2 9
5 1 8
6 1 5
> d2[c(TRUE, diff(d2$b) < 0), ]
a b
1 3 10
2 2 8
3 2 6
5 1 8
6 1 5
そのため、十分な回数を繰り返し適用することになる。
> sum(diff(d2$b) > 0)
[1] 1
これが0になるのが、終了条件。
768:132人目の素数さん
13/02/02 19:57:32.38
cummin
を使えばいいか?
769:132人目の素数さん
13/02/03 12:03:27.26
これなら1,9,8,1の並びも一回で行けるか?
dat = read.csv(text = "a,b
3,5
2,3
2,2
2,1
1,9
1,8
1,1")
dat
dat$cummin <- cummin(dat$b)
dat$correct <- with(dat, b == cummin)
dat
dat[dat$correct == TRUE,]
770:132人目の素数さん
13/02/03 13:34:45.07
r-base-core がみつからないとか言われるでござる…
771:132人目の素数さん
13/02/03 22:46:23.58
ビッグデータに関する本で
膨大なデータを統計処理して活用するために
RやJavaのhadoopが使える人材が求められてるって書いてあったな
772:132人目の素数さん
13/02/05 08:32:45.91
すみません、グラフで箱の左下をゼロで直交するようにしたいのですが (軸オンリーではなく箱で書きたいのです)、
Baseパッケージで何か良い方法ありませんでしょうか?
今は↓のように書いていますが、ablineで線を引くとはみ出してしまう等手間がかかるので、
簡単にかける方法をご存知の方おりましたらお願いします
plot(x=0,y=0,xlim=c(0,6),ylim=c(0,3),lwd=2,ann=F,cex.axis=1,las=1,type="n",axes=F)
axis(side=1,seq(0,6),lab=F,pos=0,tck=0); axis(side=2,seq(0,3),lab=F,tck=0,pos=0)
axis(side=3,at=0:6,lab=F,tck=0,pos=3); axis(side=4,at=0:3,tck=0,lab=F,pos=6)
axis(side=1,at=0,tck=0,pos=0)
>>735-37
レス忘れていました、申し訳ありません
Rconsoleが2つ存在し妙な読み込みがされていたのが原因でした
アドバイスありがとうございました
773:132人目の素数さん
13/02/05 09:04:30.55
>>772
> plot.new()
> box()
とすると、左下に原点が来るけど。
> points(0, 0)
774:132人目の素数さん
13/02/05 09:17:22.01
>>773の追記
R的なアプローチとして、複雑な手続きを関数化して簡単にする方法がある。
f772 <- function(){
plot(x=0,y=0,xlim=c(0,6),ylim=c(0,3),lwd=2,ann=F,cex.axis=1,las=1,type="n",axes=F)
axis(side=1,seq(0,6),lab=F,pos=0,tck=0); axis(side=2,seq(0,3),lab=F,tck=0,pos=0)
axis(side=3,at=0:6,lab=F,tck=0,pos=3); axis(side=4,at=0:3,tck=0,lab=F,pos=6)
axis(side=1,at=0,tck=0,pos=0)
}
とスクリプトの最初に書いておけば、
> f772()
以降は、これだけでよい。Baseパッケージのコマンドを探すよりも簡単。
775:132人目の素数さん
13/02/06 03:22:55.78
xaxs/yaxs (AXis Style)のことか
plot(1,1, xaxs = "i", yaxs = "i", xlim = c(0,1), ylim = c(0,1), tck = 0)
?parでbaseの細かいオプションの説明がみられる。
これも役立つかも
www.stat.auckland.ac.nz/~paul/RG2e/chapter3.html
776:132人目の素数さん
13/02/06 06:43:29.05
__ノ)-'´ ̄ ̄`ー- 、_
, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
777:132人目の素数さん
13/02/06 17:31:58.49
>>773-775
レスありがとうございます
非常に参考になりました
778:132人目の素数さん
13/02/15 09:19:22.40
barplot と plotを重ねるときに、
軸(目盛の位置)がずれてしまうのですが、
揃える方法ってあるのでしょうか?
barplot(1:10, xlim=c(0,10), ylim=c(0,10))
par(new=T)
plot(1:10, col=2, xlim=c(0,10), ylim=c(0,10))
779:132人目の素数さん
13/02/15 10:52:07.52
>>778
よく分からないが、
> a <- barplot(1:10); points(a, 1:10, col = 2)
こうしたいの?
780:132人目の素数さん
13/02/15 11:18:55.04
>>779
縦軸の0の位置が、barplot と plot で違うんで揃えたいんです。
781:132人目の素数さん
13/02/15 11:34:08.72
>>780
いや、そもそも揃っているけど。
> a <- barplot(1:10); points(a, rep(0, 10), col = 2)