統計解析R たぶんpart3くらい
1 :デフォルトの名無しさん :2012/06/22(金) 13:33:12.40 .net あっても良さそうなんですが,需要ないの? 過去スレのうちのひとつ 統計解析R http://toro.2ch.net/test/read.cgi/tech/1285597198/
2 :デフォルトの名無しさん :2012/06/22(金) 13:33:48.72 .net このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
3 :デフォルトの名無しさん :2012/06/22(金) 13:34:23.47 .net Rのスレは別の板にあったと思うけど
4 :デフォルトの名無しさん :2012/06/22(金) 13:38:51.83 .net 数学板にあったけど、あっちはサーバーが飛んじゃったから、こっちに立ててもいいんじゃないかな。
5 :デフォルトの名無しさん :2012/06/22(金) 14:03:13.96 .net R ってデータベース?
6 :デフォルトの名無しさん :2012/06/22(金) 14:07:26.08 .net R言語
7 :デフォルトの名無しさん :2012/06/22(金) 14:14:08.01 .net SQLみたいなもの
8 :uy :2012/06/22(金) 14:55:08.20 .net Rはゴミカス向けだと断言する 俺はゴミカスだがエリートゴミカスだ お前らのような下級ゴミカスとは格が違う
9 :デフォルトの名無しさん :2012/06/22(金) 16:45:46.35 .net 数学版から誘導されてきたけど、 Rjpwikiと裏Rjpwikiのヲチはここでよいの?
10 :デフォルトの名無しさん :2012/06/22(金) 16:54:24.99 .net いいんじゃないの
11 :デフォルトの名無しさん :2012/06/22(金) 20:08:15.52 .net これのクラスとかのオブジェクト指向言語的な機能って なんか目指すところが普通の言語と違ってる感じだよな
12 :デフォルトの名無しさん :2012/06/22(金) 20:28:36.18 .net >>11 具体的にどのように?
13 :デフォルトの名無しさん :2012/06/23(土) 02:07:10.62 .net programmerというよりはstatisticianが使いやすいことを念頭にしているから?
14 :デフォルトの名無しさん :2012/06/23(土) 20:38:20.57 .net >>13 R言語って、統計解析ソフトのマクロ言語みたいなものだから、 一般のプログラミング言語と比較する方が間違っていると思う。 Rの基本関数はCやfortranで書かれたものを呼び出しているに過ぎない。
15 :デフォルトの名無しさん :2012/06/24(日) 00:59:34.17 .net なんでこの板にスレ立てたの?
16 :デフォルトの名無しさん :2012/06/24(日) 17:58:17.10 .net Rを使ってる奴等はなにに使っているのか
17 :uy :2012/06/24(日) 18:16:28.30 .net 俺はゴミカスだがエリートゴミカスでR お前らのような下級ゴミカスとは格が違うのでR
18 :uy :2012/06/24(日) 18:36:21.91 .net ゴミ
19 : 忍法帖【Lv=40,xxxPT】 :2012/06/24(日) 18:37:28.15 .net そういえば S のスレはなんでないの?
20 :uy :2012/06/24(日) 18:38:38.18 .net Mのスレならあるぞ ちなみに俺はMだ
21 :デフォルトの名無しさん :2012/06/25(月) 00:19:02.83 .net >>16 10個くらいのパラメータあるときに、 pairsで、総当りの相関見るのは便利
22 :デフォルトの名無しさん :2012/06/27(水) 10:48:52.12 .net これってマスマティカみたいな使い方できるの?
23 :デフォルトの名無しさん :2012/06/27(水) 12:30:40.49 .net >>22 つmaxima
24 :デフォルトの名無しさん :2012/06/27(水) 13:16:37.54 .net ありがとうございます。 maximaも荒らしが凄いのねプログラム板に移動したいですね。
25 :デフォルトの名無しさん :2012/06/28(木) 01:50:26.32 .net 2ch の見過ぎで ステマ ティカに見えた。
26 :デフォルトの名無しさん :2012/08/05(日) 14:19:49.11 .net ●関連サイト The R Project http://www.r-project.org/ RjpWiki http://www.okada.jp.org/RWiki/ リンク集 http://www.okada.jp.org/RWiki/?%A5%EA%A5%F3%A5%AF%BD%B8
27 :デフォルトの名無しさん :2012/09/28(金) 23:24:36.57 .net 【R言語】統計解析フリーソフトR 第4章【GNU R】 http://uni.2ch.net/test/read.cgi/math/1294561909/
28 :デフォルトの名無しさん :2012/11/19(月) 21:54:33.25 .net データを分割してスペクトルを測定しようとして次のようなプログラムを書いてみたんですが、 「以下にエラー spec.pgram(x, ...) : 添え字が許される範囲外です 」 と出て動かないですが何がおかしいんでしょうか? 行ごとに実行して動いているんですけど。 function(x) { n <- length(x) l <- 40000 m <- floor(n/l) for (i in 0:(m -1)) { spectrum(ts(x[i*l+1 : (i+1)*l],deltat=.0025)) } }
29 :デフォルトの名無しさん :2013/02/18(月) 15:28:53.89 .net >>28 カッコ追加してみた。 spectrum(ts(x[(i*l+1) : ((i+1)*l)],deltat=.0025))
30 :デフォルトの名無しさん :2013/06/07(金) 03:19:25.84 .net 馬鹿には無理
31 :デフォルトの名無しさん :2013/07/17(水) NY:AN:NY.AN .net RなんかよりもIncanterを使うべき
32 :デフォルトの名無しさん :2013/07/17(水) NY:AN:NY.AN .net >>31 >Incanter 知らなかったので調べてみたら、 本当にExcel統計に負けるほどの基本関数しかなさそう。 経済、医学、生態とか分野別になってもいないし、 ベイズ推定とかデジタル地図の空間演算とか何もなさそう。 > RなんかよりもIncanterを使うべき お薦めの点はどういうところ?
33 :デフォルトの名無しさん :2013/07/17(水) NY:AN:NY.AN .net 俺が作った(きりっ
34 :デフォルトの名無しさん :2013/07/17(水) NY:AN:NY.AN .net lispで書ける。それだけだが、それこそが何ものにもかえがたい。
35 :デフォルトの名無しさん :2013/07/17(水) NY:AN:NY.AN ID:wY2Fpqcr!.net groovyからR呼べないの?Javaって機械学習周りのOSSツール沢山あるのに 最近、Apache族がGroovyをデファクトで採用しそうな感あるよね
36 :デフォルトの名無しさん :2013/07/18(木) NY:AN:NY.AN .net >>31 と言っている本人も使っていないくせに。まだpytnonでnumpyとscikits statsmodels & pandasを使う方がまだ実用性がある。
37 :デフォルトの名無しさん :2013/07/20(土) NY:AN:NY.AN .net Pythonにはthink.statsて物もあるからね。 普及はしてナイっぽいが。
38 :デフォルトの名無しさん :2013/09/19(木) 22:08:26.66 .net Excelとか信用できない
39 :デフォルトの名無しさん :2013/11/11(月) 00:53:05.70 .net タイトルに次からはR言語って入れろや 次スレは5年は後だろうけど
40 :デフォルトの名無しさん :2013/11/12(火) 13:22:39.61 .net >>39 RのことをR言語というは2重の意味で反対って、 御大が仰っていたが。
41 :デフォルトの名無しさん :2013/11/22(金) 19:28:27.39 .net 人いないの?
42 :デフォルトの名無しさん :2013/11/22(金) 21:38:26.09 .net >>41 いるけど、何故か質問は数学版の方にしか来ない
43 :デフォルトの名無しさん :2013/11/23(土) 01:14:47.37 .net なる
44 :デフォルトの名無しさん :2013/11/29(金) 09:29:59.88 .net >>42 >>41 数学版 http://uni.2ch.net/test/read.cgi/math/1380168442/
45 :デフォルトの名無しさん :2014/02/25(火) 19:38:37.59 .net ↓こんなんあるんだね。なかなか良さそう。 http://www.rstudio.com/
46 :デフォルトの名無しさん :2014/02/25(火) 22:00:32.70 .net >>45 ESSを使えよ
47 :デフォルトの名無しさん :2014/02/26(水) 21:50:31.58 .net え?
48 :デフォルトの名無しさん :2014/02/28(金) 05:46:01.14 .net ESSって何?
49 :デフォルトの名無しさん :2014/02/28(金) 10:10:53.87 .net >>48 Emacs Speaks Statistics 世界の主なR開発者とユーザが使っているEmacs用のインターフェイス 昔はRStudioとかなくて、pmgとかRKWardとかはあったけど、 あまり使い物にならなかったので、事実上、ESSしか選択肢がなかった。 だから、Rの古参ヘビーユーザはほとんどESSユーザ。 # Emacsを団塊世代の化石と揶揄するのはなしの方向で
50 :デフォルトの名無しさん :2014/02/28(金) 13:35:24.88 .net ESSで、なにげにJuliaも使える 便利
51 :デフォルトの名無しさん :2014/02/28(金) 14:19:03.56 .net 何故、EmacsはVimより重いのか
52 :デフォルトの名無しさん :2014/02/28(金) 16:15:38.85 .net こんなとこでEmacsとVimの論争はやめてよ!
53 :デフォルトの名無しさん :2014/03/01(土) 19:08:21.35 .net なにこれ言語?
54 :デフォルトの名無しさん :2014/03/01(土) 21:46:47.33 .net Rって汎用言語よりも遥かに短く式書けていいよね
55 :デフォルトの名無しさん :2014/03/01(土) 23:36:28.98 .net >>53 行列演算をサポートするスクリプト言語。 おもに統計の手法開発向けに考えられたS言語というのがあって それの兄弟言語。 無償なんで結構つかっている人は多い。
56 :デフォルトの名無しさん :2014/03/03(月) 20:39:05.33 .net gsにならなくて良かったと思う
57 :デフォルトの名無しさん :2014/03/04(火) 02:50:08.77 .net 確かに
58 :デフォルトの名無しさん :2014/03/05(水) 13:05:50.24 .net 今、本を読んで、 多くの常識はずれなことに当惑している ここはプログラム板だから、 プログラムの観点から言わせてもらうと、 まず行ではなく、列方向に、 データがまとめられていることに、 ショックを受けた 次に、C言語の配列がなく、 リストを配列と呼んでいるらしい もう、ついていけん!これは文系脳?
59 :デフォルトの名無しさん :2014/03/05(水) 13:59:51.37 .net 論理的に述べよ
60 :デフォルトの名無しさん :2014/03/05(水) 15:10:50.95 .net Lisp脳からすると配列とか言われると頭がモヤモヤする。
61 :デフォルトの名無しさん :2014/03/05(水) 15:12:20.33 .net >>58 Rの目的は、自分が考えたオレ様統計量やモデルを簡単に実装すること。 既存の言語に過度に振り回されず、簡潔明瞭に統計モデルが記述できればそれでよい。 > 次に、C言語の配列がなく、 > リストを配列と呼んでいるらしい arrayとlistは別物だけど、そこは理解している?"["関数は理解している? > a <- array(1:9, dim = c(3, 3)) > a[2, 3] [1] 8 > b <- list(x = matrix(1:6, 2), y = letters[1:5]) > b $x [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 $y [1] "a" "b" "c" "d" "e" > b[[1]][2, 2] [1] 4
62 :デフォルトの名無しさん :2014/03/05(水) 15:19:18.25 .net あっ、逆か。 Cのリスト構造がRの配列に相当すると主張しているのか? でも、そうすると余計に意味不明。 データフレームが変数ごとにまとめられているのは、 データベース的観点から言えばあたりまえ。
63 :デフォルトの名無しさん :2014/03/05(水) 18:13:19.20 .net もともと、Sの世界でデータフレームというものはなかった。 あくまで手法開発ツールなので、それでよしということだったが データ処理という観点で必要性が高いため追加された。 ただし、データ管理という点では今だ無いに等しいので、ビジネスで 使うには他ソフトとのコラボレーションがどうしても必要。
64 :デフォルトの名無しさん :2014/03/05(水) 19:02:19.38 .net データベース的には行指向のほうが普通じゃない? 最近は列指向DBもあるけど 構造体とかオブジェクトとかとは逆だけどそれはそういうもんだと思うしかないのでは
65 :デフォルトの名無しさん :2014/03/05(水) 19:55:49.67 .net >データベース的には行指向のほうが普通じゃない? 実世界のデータ自体がそういう形だからね。 数理系の目的以外で使用するのはちと厳しい。
66 :デフォルトの名無しさん :2014/03/07(金) 09:46:21.15 .net >>58 行列データの物理的な格納方式のことを言っているのだったら、 C言語は行列の格納は行指向(row-major)だけど、 Fortranだと列指向(column-major)なので、Rが列指向なのはむしろ自然。
67 :デフォルトの名無しさん :2014/03/07(金) 09:48:09.85 .net RDBに慣れた人がKVSに文句言ってるくらい可笑しい話
68 :58 :2014/03/07(金) 18:07:17.21 .net >次に、C言語の配列がなく、 >リストを配列と呼んでいるらしい 漏れの勘違い Rのベクトルは、C言語の静的配列で、 同じデータ型の要素が並ぶもの Rのリストは、C言語の構造体で、 異なるデータ型の要素が並ぶもの Rのデータフレームは、Rのリストの集積 「アート・オブ・R・プログラミング」を読んでいるが、 オライリーの本は外人なので、 わかりにくいし、疲れる。時間のムダ アンクの絵本みたいに、 図で表示すればすぐわかるのに
69 :デフォルトの名無しさん :2014/03/07(金) 22:00:30.36 .net >>68 文句ばっかりw しかも間違っているし。
70 :デフォルトの名無しさん :2014/03/07(金) 23:03:20.28 .net >>58 数値計算専用のFortranは列指向なわけだが
71 :デフォルトの名無しさん :2014/03/07(金) 23:04:33.54 .net 68みたいに何の素養もないボケがRを使うような機会ってあるの?
72 :デフォルトの名無しさん :2014/03/08(土) 01:14:26.20 .net ひょっとして手当たりしだいに履歴書だせば、Rでデータ解析するような仕事に付けるの?
73 :デフォルトの名無しさん :2014/03/10(月) 17:40:34.54 .net >>72 試してみれば?
74 :デフォルトの名無しさん :2014/06/23(月) 23:56:50.05 ID:8AKvYnoG.net >>74 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14130946449
75 :デフォルトの名無しさん :2014/06/25(水) 10:07:33.40 ID:2DQs2BI0.net やはりそのようなパッケージはないということでしょうか?
76 :デフォルトの名無しさん :2014/06/25(水) 12:34:21.85 ID:dEg0ohw8.net >>75 Tucker法とかなら、ThreeWayパッケージ
77 :デフォルトの名無しさん :2014/06/25(水) 12:37:16.63 ID:2DQs2BI0.net ご返答ありがとうございます three Wayパッケージについて調べてみたいと思います。
78 :デフォルトの名無しさん :2014/06/29(日) 22:51:21.82 ID:oVWMi4Qv.net ・グラフを重ねて描画 ・グラフを並べて描画 この2つの両立は可能でしょうか? 以下の様な流れのコードで、可能かと思ったのですが、 ひとつのグラフエリアに全グラフを出力してしまい、実現できませんでした。 よろしくお願いします。 //描画領域を1行4列に jpg('test.jpg') par(mfcol=c(1,4)) //4回繰り返す while(4回繰り返す){ //1つのグラフに、3本の線を描画 while(3回繰り返す){ par(new=T) hogehoge = 描画したいデータ plot(hogehoge,type="l") } } //画像ファイル出力 dev.off()
79 :デフォルトの名無しさん :2014/06/30(月) 10:15:13.59 ID:F0ToNnNt.net >>78 > ・グラフを重ねて描画 > ・グラフを並べて描画 > この2つの両立は可能でしょうか? 可能と言えば可能。 ただし、1つのグラフに、3本の線≠グラフを重ねること 複数の折れ線グラフを描画するときには、 plot()で軸などを描画した後に、lines()で線を描くのが基本。 matplot()を使うのもあり。 plot(runif(10), runif(10), type = "l") lines(runif(10), runif(10), lty = 2, col = 2) lines(runif(10), runif(10), lty = 3, col = 3) これを1行4列に op <- par(mfcol=c(1,4)) sapply(1:4, function(i){ hogehoge <- as.data.frame(x = runif(30), y = runif(30)) plot(hogehoge[1:10, ], type = "l") lines(hogehoge[11:20, ], lty = 2, col = 2) lines(hogehoge[21:30, ], lty = 3, col = 3) }) par(op) みないな感じにする。 なお、// のコメント禁止。代入に=を使うのは禁止。 初心者はpar(new=T)の使用禁止。 while()も真にやむを得ない場合以外は避ける(回数が決まっているループに使うのはもってのほか)。
80 :デフォルトの名無しさん :2014/07/15(火) 00:50:38.77 ID:wW4cYINX.net 画像ファイル形式に、表(行列)を出力する方法ってありますか? 無ければデータフレームをwriteでcsvに書き出して、スクショとってペイント切り貼りなので、 できれば避けたいです・・・
81 :デフォルトの名無しさん :2014/07/15(火) 04:48:30.38 ID:BzYTWLeF.net gridExtraパッケージのgrid.table()でいける
82 :デフォルトの名無しさん :2014/07/15(火) 09:50:16.91 ID:zeQtrZTc.net >>81 質問者じゃないけど、参考になった。 複雑な図にたくさんの数字ラベルをつけて、 横に数字とラベル名の対照表を簡単につけられないかと長年考えていたが、 これなら簡単そうだな。 op <- par(mfrow = c(1,2)) x <- data.frame(x = runif(10), y = runif(10)) plot(x, cex=2) i <- 1:10 text(x, as.character(i)) grid.table(data.frame(Month = month.name[i])) par(op) だが、古典グラフィックとGridの共存がうまくいかないw
83 :83 :2014/07/15(火) 10:02:10.30 ID:zeQtrZTc.net 突っ込まれる前に追記。 もちろん、下記のようにすれば、ある程度実現することは分かっているけど、 ちゃんとレイアウトされた表にすることが難しい x <- data.frame(x = runif(10), y = runif(10)) plot(x, xlim = c(0, 1.5), cex=2) i <- 1:10 text(x, as.character(i)) legend("topright", paste(formatC(1:10, width=2), month.name[i]), title = "Month", bty = "n")
84 :デフォルトの名無しさん :2014/07/22(火) 23:06:40.83 ID:ygL5Ppst.net >>81 ありがとうございます。 無事表示できました 贅沢を言えば、 >>82 の方が言うように 既存のplotと共存させてなくなってきました。 ライブラリを読みましたが、既存のplotとの共存はできないのでしょうか @A @プロットしたグラフ Aその値の表
85 :デフォルトの名無しさん :2014/07/23(水) 14:05:46.44 ID:DL7ooDbK.net >>84 古典グラフィックと混載するのではなく、 全てをGrid化して制御すれば、自由自在に描画できると思うよ。 とりあえず、viewport()を勉強してくれ ちょっと長くなるけど、下記のコードは期待通りになった。 library(gridExtra) grid.newpage() pushViewport(viewport(x = 0, width = 0.8, just="left")) pushViewport(plotViewport()) grid.rect(); grid.xaxis(); grid.yaxis() x <- runif(10); y <- runif(10) grid.points(x, y, size = unit(1.5, "char")) grid.text(as.character(1:10), x = x, y = y) grid.text("Grid test plot", y = unit(1, "npc") + unit(2, "lines")) popViewport() pushViewport(viewport(x = 1.2, width = .2, just = "right")) grid.table(data.frame(Month = month.name[1:10]))
86 :デフォルトの名無しさん :2014/08/10(日) 10:38:43.73 ID:frgBbTF3.net 【動物】外へ出たネコはどこへ行くのか? 1000匹のデータから解明するプロジェクト [8/8] http://daily.2ch.net/test/read.cgi/newsplus/1407513849/
87 :デフォルトの名無しさん :2014/08/10(日) 17:44:43.02 ID:2ZseX05a.net RのクラスってC言語上でクラスを作るみたいなもんだな
88 :デフォルトの名無しさん :2014/08/12(火) 16:06:31.87 ID:8jEy2U7J.net pygmentsを使ってみたが、 $ pygmentize -N tmp.R splus $ pygmentize -N tmp.r rebol 拡張子が小文字だとREBOLと認識される模様。
89 :デフォルトの名無しさん :2014/08/13(水) 10:33:15.47 ID:oD1F8/c3.net 代入にほとんど<-が使われていますが、 =を<-と同じとして使ってよいのでしょうか?
90 :デフォルトの名無しさん :2014/08/13(水) 10:54:55.70 ID:o5aSPwlN.net >>89 だめ。意味が違うし、結果が異なる場合もある。 ベテランでも<-にすべきところで=を使っている人もいるので、 混乱すると思うけど、S言語の仕様に従った方が間違いがない。 <-と=で結果が変わってしまう例: > (x <- 9:11) [1] 9 10 11 > mean(x = 1:3); mean(x) [1] 2 [1] 10 > mean(x <- 1:3); mean(x) [1] 2 [1] 2 > x [1] 1 2 3 引数に<-を使うと、mean(x)の値が予期せず変わってしまう。 9,10,11の平均値を2として論文に書いてしまう人はいないだろうが、 複雑な計算だったら、気がつかずにそのまま解析結果にしてしまうかも知れない。
91 :デフォルトの名無しさん :2014/08/13(水) 23:10:16.62 ID:oD1F8/c3.net >>90 ありがとうございました 最近勉強始めたのですが、教えていただけなければ全部=で覚えるところでした また機会ありましたらよろしくおねがいします
92 :デフォルトの名無しさん :2014/08/14(木) 23:20:58.24 ID:R0JPen8d.net ちょっとお聞きしたいのですが、 x y z f 1 1 1 f1 1 1 2 f2 1 1 3 ・・ 1 2 1 1 2 2 1 2 3 1 3 1 1 3 2 ・・ のようなデータがあって、 例えばzが1だけのx,y,fだけで3次元サーフェスプロットを書きたいのですが、 Rだとそういったことはもしかしてできたりしますでしょうか? (可能なら他のz=2,z=3でのサーフェスプロットも同時に表示するなど・・) 突然ですいませんがもしよろしければご教示いただけると幸いです
93 :デフォルトの名無しさん :2014/08/15(金) 07:01:45.18 ID:fd04cuVy.net subsetで抜き出せばいいんじゃないの?
94 :デフォルトの名無しさん :2014/08/15(金) 07:27:33.42 ID:Evb4CBKF.net aggregate
95 :デフォルトの名無しさん :2014/08/15(金) 10:42:07.27 ID:keCvNQ07.net >>92 > dat <- data.frame(expand.grid(1:3, 1:3, 1:2)[,3:1], as.factor(paste0("f",1:18))) > names(dat) <- c("x", "y", "z", "f") > dat x y z f 1 1 1 1 f1 2 1 1 2 f2 3 1 1 3 f3 4 1 2 1 f4 5 1 2 2 f5 6 1 2 3 f6 [中略] 17 2 3 2 f17 18 2 3 3 f18 というデータがあったとして、 > (dat1 <- dat[dat$z == 1, ]) x y z f 1 1 1 1 f1 4 1 2 1 f4 7 1 3 1 f7 10 2 1 1 f10 13 2 2 1 f13 16 2 3 1 f16 とすればzが1だけのデータになる。これを行をx、列をyとしたときのfの行列を作成してpersp()で表示すればよい。 > m <- matrix(NA, nrow = max(dat1$x), ncol = max(dat1$y)) > for(i in 1:nrow(dat1)){m[dat1[i, 1], dat1[i, 2]] <- dat1[i, 4]} > persp(m) factor型のfを強制的に整数型にしているけど、適宜、自分の思うとおりにアレンジしてくれ。
96 :デフォルトの名無しさん :2014/08/16(土) 09:02:48.15 ID:qH3oiq6R.net >>93-96 ありがとうございました 特に具体的なやり方まで教えていただき、感謝です 試させていただこうと思います
97 :東京女子医科大学病院プロポフォール大量投与 :2015/06/08(月) 16:27:57.84 ID:Fqp3awmG.net マスゴミ・売国奴・医療業界が隠そうとする真実---------------------安楽死---------------------奴隷に勝手に死なれては困る 安楽死旅行企画が大人気|竹田恒泰チャンネル https://www.youtube.com/watch?v=XmP1TRsAe88 武田邦彦:安楽死と大麻、そして売春・・・オランダに学ぶ https://www.youtube.com/watch?v=nWV8YOY39tw 安楽死党 https://www.youtube.com/watch?v=8nU2UaSlGx0 自殺は後遺症が怖い!だから-----------------------------------安楽死制度-------------------------------------安心して生きるために
98 :デフォルトの名無しさん :2015/06/08(月) 18:08:45.21 ID:rJB8iCDI.net まだあったのかこのスレ
99 :デフォルトの名無しさん :2015/06/20(土) 23:30:00.14 ID:Qr2aZUd+.net bash スクリプト内でRのスクリプトを起動して統計処理させてその結果を 1か0かで戻り値($?)として返すにはどうすれば良いでしょうか?
100 :デフォルトの名無しさん :2015/06/21(日) 00:47:25.51 ID:3VZnQzoZ.net シェルスクリプト test.sh の内容 #!/bin/bash r --vanilla --slave < test.R # コマンドの直後に、終了コードを見る echo $?
101 :デフォルトの名無しさん :2015/06/21(日) 01:10:40.72 ID:r+1klduk.net ありがとうございます。 test.R側で戻り値を返す際の指定の仕方が判らなかったのですが、 単に戻り値が入った変数を最終行に書く?
102 :デフォルトの名無しさん :2015/06/21(日) 01:21:55.21 ID:3VZnQzoZ.net Rで、returnを使えるかどうか、よく知らないけど、 test.R(Rスクリプト)側に、return 0か1を書けば、 シェルスクリプト側に、返り値を返せないのかい? もし返り値を返せるのなら、その直後に、 echo $? で確認できる この話題を続けるのなら、名前欄に100と入れておくれ
103 :100 :2015/06/21(日) 19:38:19.06 ID:r+1klduk.net 手元のPCにインストールしてやってみたのですが、 test.Rで nantoka <- 123 nantoka とやって>>100 のようにして $?を確認しても0ですね return nantoka と書くと今度は「エラー:予想外のシンボルです」と出て弾かれます return はtest.R内定義された関数からの戻りにしか使えなさそうです。 やっぱtest.Rを呼び出した側にステータス値を返すのは出来ないんですかねぇ。
104 :デフォルトの名無しさん :2015/06/22(月) 12:27:26.12 ID:uueAlGhq.net >>103 ちょっとまて。 0で正解だろ。 Rの処理が失敗すれば1に、成功すれば0だから、それで正しいだろ。 何がしたいんだ。 ------- ここから ----- #!/bin/bash cat <<EOF > test.R nantoka <- 123 hoge EOF R --vanilla --slave < test.R echo $? ------- ここまで ------ これならちゃんと期待通り1が返るけど。
105 :100 :2015/06/22(月) 23:35:39.56 ID:S3HFEXZp.net >0で正解だろ。 >Rの処理が失敗すれば1に、成功すれば0だから、それで正しいだろ。 質問の仕方が悪くてすみません。具体的にやりたい事を書くと、mean()で計算した結果が、 ある範囲に入っていたらbashスクリプト側にスタータス値として 1を返し、範囲外だったら0 を返すをやりたいんですが、どう書いたら良いんでしょう。。。
106 :100 :2015/06/22(月) 23:57:01.52 ID:S3HFEXZp.net Rスクリプト側でステータス値を標準出力に印字して bashスクリプト側で変数に代入する事で出来ました。 >>104 さんのレスがヒントになりました。感謝! ありがとうございました。
107 :デフォルトの名無しさん :2015/08/02(日) 12:32:42.11 ID:idlTEEIr.net RのpackageがGPL3のとき、それを使ったcodeもGPL3にしなければいけないのでしょうか? packageがGPL2のときは、どうなるのでしょうか?ライブラリを動的にリンクすると解釈して、自分のコードはGPLにしなくていいのでしょうか?
108 :デフォルトの名無しさん :2015/08/28(金) 17:44:03.14 ID:gCzTjEPZ.net Rが嫌いすぎる。 1オリジンが気に食わない。 インデックス指定で、やたら+1とか-1を書かないといけない。バグの元凶。 名前空間の概念が皆無なのが気に食わない。デフォルトインストール状態でグローバルな名前空間に、 小文字二文字でしらっと置いてある識別子がただのサンプルデータ(例: lh)だったりする。 文法が気に食わない。「a <- b < -1」って書くべきところ、間違ってマイナスの前のスペースを 入れ忘れると、警告も無く別の意味になる。 設計したやつ頭悪すぎ。 できれば使いたくない、抹殺したいんだけど、仕事の分野で好んで使う人が多いんだよなぁ。
109 :デフォルトの名無しさん :2015/08/28(金) 18:52:05.79 ID:uyIc6mpd.net >>108 はははは、ウケる! > デフォルトインストール状態でグローバルな名前空間に、 > 小文字二文字でしらっと置いてある識別子がただのサンプルデータ(例: lh)だったりする。 これは君の勘違いだから、よく確認して。
110 :デフォルトの名無しさん :2015/08/29(土) 19:00:44.80 ID:6T7B8OhX.net そこらのLinuxディストリのリポジトリからインストールすると、 datasetsパッケージから読まれた状態にならない?
111 :デフォルトの名無しさん :2015/08/31(月) 02:17:53.94 ID:/Res4O1b.net googlabilityの低さだけでRは唾棄するに値する。
112 :デフォルトの名無しさん :2015/08/31(月) 02:41:18.19 ID:YeB+ArJK.net S
113 :デフォルトの名無しさん :2015/08/31(月) 13:01:31.84 ID:pbDzwjeD.net >>110 そうだね。 $ R --vanilla [snip] > search() [1] ".GlobalEnv" "package:stats" "package:graphics" [4] "package:grDevices" "package:utils" "package:datasets" [7] "package:methods" "Autoloads" "package:base" でも、 > ls(envir = .GlobalEnv) character(0) だよ。
114 :デフォルトの名無しさん :2015/08/31(月) 13:41:28.94 ID:pbDzwjeD.net なお、起動時にライブラリが自動読み込みされるのが嫌なら、 ~/.Rprofileなどで、 options(defaultPackages="") とでもしておけばよいのでは。
115 :デフォルトの名無しさん :2015/08/31(月) 15:23:52.28 ID:lnhGD55+.net なにバッドノウハウひけらかしてドヤ顔してんのww Rが低能向けゴミ言語であることの証左にしかならんね。
116 :デフォルトの名無しさん :2015/09/01(火) 01:31:57.27 ID:bxs8OqLw.net じゃあフリーでLinuxでもWindowsでも使える R以上の統計解析言語教えてくれ
117 :デフォルトの名無しさん :2015/09/01(火) 10:36:16.50 ID:FCO6+VHV.net >>115 コンピュータ言語だと思うから、そのような感想が出てくるのでは? 統計ソフトウェアのマクロ機能と認識したらいい。
118 :デフォルトの名無しさん :2015/10/23(金) 10:35:38.68 ID:PW+zDUKh.net すみません、質問です。Rの教科書をめくりながら、length(grep("^[0-9]{8}", code)) というのを理解しようとしているのですが、"^[0-9]{8}"というのはどういうことですか?
119 :デフォルトの名無しさん :2015/10/23(金) 21:46:06.88 ID:gk5p2TwL.net どう見ても正規表現だらうが r以前の問題
120 :デフォルトの名無しさん :2015/10/24(土) 00:07:21.80 ID:UobHhbYM.net ^[0-9]{8} ^ は行頭。 [0-9]は、0〜9のうちのどれか、つまり数字。 {8}は、直前の文字が、8回繰り返す つまり、行頭に、8桁の数字がある行にマッチする
121 :デフォルトの名無しさん :2015/10/24(土) 10:04:48.60 ID:15ItISv+.net ありがとうございます、正規表現でぐぐって勉強しました。
122 :デフォルトの名無しさん :2015/11/21(土) 00:24:32.92 ID:VHysWTPx.net striptimeで、時刻型に変換したデータを横軸にトレンドグラフをplotしています このグラフに縦線を入れたいのですが、可能でしょうか? date = c(20151101235959 , 20151103235959) value = c(10 , 20) plotdate = striptime(date , "%Y%m%d%H%M%S") plot(plotdate , value , type="l") ここまでは可能でした。 x軸に縦線を入れたいのですが、ablineでの描き方がわかりません どなたかご教示いただけないでしょうか
123 :デフォルトの名無しさん :2015/11/24(火) 22:19:32.58 ID:L4GoLvG3.net >>122 縦線って > for(i in seq(from=plotdate[1], to=plotdate[2], length.out=10)){abline(v=i)} こんな感じのものを求めているの?
124 :デフォルトの名無しさん :2015/12/18(金) 19:52:52.36 ID:2coSHlfA.net すみません、どうしてもわからなくて質問です。 a<-1:10 b<-1:10 for(i in 1:10){ for(j in i+1:10){ if(a[i]!=b[j]) print(
125 :デフォルトの名無しさん :2015/12/18(金) 19:54:57.43 ID:2coSHlfA.net すみません、どうしてもわからなくて質問です。 a<-1:10 b<-1:10 for(i in 1:10){ for(j in i+1:10){ if(a[i]!=b[j]) print("hello") }} これを実行したらif文の所にエラーが出るんです。どうしたら解決できますか。教えてください、お願いします。
126 :デフォルトの名無しさん :2015/12/20(日) 11:31:46.28 ID:5iYm2Bjx.net 「i+1:10」のところの演算子で、+よりも:が優先されるから。 「(i+1):10」とすればよい。
127 :デフォルトの名無しさん :2015/12/22(火) 17:32:24.26 ID:tE+guwu7.net ありがとうございます。聞かないと分かりませんでした。
128 :デフォルトの名無しさん :2016/02/15(月) 22:29:22.41 ID:GQeFSl1p.net R言語徹底入門、初版は何箇所か誤訳があるので購入は様子見。
129 :デフォルトの名無しさん :2016/02/16(火) 23:39:43.76 ID:Np/Wt5jb.net 増刷がかかるか 誤訳が修正されるか と考えると買っちまうかな、「徹底入門」じゃなくて「徹底解説」。
130 :デフォルトの名無しさん :2016/02/17(水) 03:10:57.33 ID:pWJL2EDc.net 増刷かかるほど売れないと思う。 でも仮に誤りがあったとしても得られるものは少なくないと思う。 岩波のWEBサイトで数ページPDFで読める。 R言語徹底解説 http://www.kyoritsu-pub.co.jp/bookdetail/9784320123939
131 :デフォルトの名無しさん :2016/02/17(水) 16:47:27.88 ID:5ZIVa4Nt.net 岩波w
132 :デフォルトの名無しさん :2016/02/19(金) 15:53:33.09 ID:SsZWzvjo.net 第二刷まだー?
133 :デフォルトの名無しさん :2016/02/19(金) 17:22:28.25 ID:tCyy2v6H.net そろそろ第三刷
134 :デフォルトの名無しさん :2016/02/19(金) 17:25:50.06 ID:SsZWzvjo.net >>133 いろいろ直ってる?
135 :デフォルトの名無しさん :2016/02/20(土) 11:42:28.63 ID:OYmUxYa1.net Pythonのyieldに相当するものってないの?
136 :デフォルトの名無しさん :2016/02/26(金) 21:22:23.14 ID:xarpBwH6.net 書泉ブックタワーで一刷が山積みになってたから 各種の誤りが訂正された二刷が出るのは当分先になるのかな?
137 :デフォルトの名無しさん :2016/02/28(日) 16:19:00.69 ID:t8GtJYBh.net 買った。第一刷。ハードカバーとは知らなんだ。
138 :デフォルトの名無しさん :2016/02/29(月) 22:28:35.19 ID:8jlAnHOJ.net 技術書なんて誤訳だらけだろ。校正してるのは文系なんだから。 ほとんどがマイナー、専門すぎてサイトに修正一覧出て初版で終わりだよ。 買いそびれたら最後、ボッタクリ価格でアマゾンで買うことになる。 手に入らないと途端に、誤植もなく、素晴らしい書籍とかデタラメなレビューが書かれて価格が釣り上がる。
139 :デフォルトの名無しさん :2016/02/29(月) 22:45:23.04 ID:LB9A9kH0.net なんかあったの
140 :デフォルトの名無しさん :2016/02/29(月) 22:52:15.59 ID:8jlAnHOJ.net 過去に散々酷い目にあったよ。一番酷いのはPrograming C++の糞訳本だったかな。 あと確率統計の本で題名詐欺の本もあったよ。まじみんな気をつけたほうがいいよ。アマゾンのレビューだけは。
141 :デフォルトの名無しさん :2016/03/01(火) 13:16:03.01 ID:spAIXSZN.net こんなとこで文句言ってるなら原著で読めって。
142 :デフォルトの名無しさん :2016/03/01(火) 13:59:13.93 ID:RhqnDJJ8.net >>141 今日もあっちこっちで馬鹿レスしてるなおまえってw
143 :デフォルトの名無しさん :2016/03/08(火) 03:16:56.45 ID:z1RS+GDI.net >>140 最近のアマゾンのレビューはほんと嘘だらけ。
144 :デフォルトの名無しさん :2016/04/15(金) 16:50:29.31 ID:7jD9y2lk.net R-Sourceが404な気がする
145 :デフォルトの名無しさん :2016/04/19(火) 23:37:39.26 ID:rVIFp0ZR.net もしかしてR-Tipsなくなってる?
146 :デフォルトの名無しさん :2016/06/15(水) 18:56:31.95 ID:P/ukFF1V.net R言語徹底解説 八重洲ブックセンターで第三刷があった。 平積みの方は第一刷だったけどw
147 :デフォルトの名無しさん :2016/07/23(土) 19:10:41.11 ID:YmsFIHnc.net Rでは2次元座標に円を描く事はできないんですか?
148 :デフォルトの名無しさん :2016/07/23(土) 19:46:19.77 ID:b4mEcWyo.net できるよ でも今なら Julia がおすすめでっせ
149 :デフォルトの名無しさん :2016/07/24(日) 11:38:41.23 ID:iiJWc7Dl.net どうやってできるんですか?
150 :デフォルトの名無しさん :2016/12/01(木) 20:05:10.85 ID:m2zH+gmd.net 過疎しているときに申し訳なくお聞きしたいのですが、 N(10,0.5^2)の,7.5以上の上側確率をRで一発で求めるコマンドはないでしょうか?
151 :デフォルトの名無しさん :2016/12/01(木) 20:14:41.90 ID:m2zH+gmd.net すいません自己解決しました pnorm(-(7.5-10.0)/0.5)でした スレ汚しすいませんでした
152 :デフォルトの名無しさん :2016/12/01(木) 20:26:09.26 ID:vHqhSsiW.net おめ
153 :デフォルトの名無しさん :2017/05/05(金) 07:53:03.19 ID:tmTYNlNg.net Rを使っている人ならわかる人もいると思うので GNU科学技術計算ライブラリ リファレンス・マニュアル https://ja.wikipedia.org/wiki/GNU_Scientific_Library のどの関数を使って、どの関数を数値積分すればよいのか、 教えてほしい。 γ関数 https://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%B3%E3%83%9E%E9%96%A2%E6%95%B0 を 使って ControlChartConstant2Double = gsl_sf_gamma(InSizeDouble / 2) * Sqr(2 / (InSizeDouble - 1)) * gsl_sf_gammainv((InSizeDouble - 1) / 2) とすると、管理図用定数 c4 が得られる。 d2, d3 を求めるための http://excelshogikan.com/qc/qc11/controlchartconstant.html φなんたらが、GSLのどの関数なのか、数値積分のどの関数を使うのか、 がわからない。 積分は、わからなければ台形公式でエィヤーとやってしまうけど。 n20位までは数値表があるのだが、nをちょっと大きくして、24時間ことのn24とかやろうとすると、のっていない。 1回計算してしまえば、数値表を使って参照するだけなのでRで処理で切ると思う。
154 :デフォルトの名無しさん :2017/05/05(金) 10:57:47.64 ID:qmO3ZpYG.net 日本語を勉強する
155 :デフォルトの名無しさん :2017/05/05(金) 11:12:35.50 ID:E/UcmmKD.net それな
156 :デフォルトの名無しさん :2017/07/20(木) 19:18:28.80.net Sはどこへ行ったか
157 :デフォルトの名無しさん :2017/08/15(火) 19:07:36.81 ID:7E+e5Eok.net 羽鳥の本は英語ならたいていpdfで無料で読めるから、文句いう人は英語で読めばよいと思うの
158 :デフォルトの名無しさん :2017/09/05(火) 00:29:28.39 ID:XRIbbVG3.net 使い始めて1ヶ月 未だにエクセルより便利な場面に出会いませぬ 回帰分析程度じゃ意味ないかな
159 :デフォルトの名無しさん :2017/09/05(火) 04:24:09.07 ID:RP+TKgYe.net したい事と選んだ手段がズレてるのでは?
160 :デフォルトの名無しさん :2017/09/05(火) 10:33:35.89 ID:7nZf6TFR.net まずは、セルでチェックできる程度の規模のデータか、あるいはもっと大きいのかによるんじゃないかな。 そして作業として簡単なものなら、多少表計算ソフトに歩があると思う。 でもこっちに慣れるとぜんぶこっちでやっちゃうけどねw 欠点としてはライブラリの秩序のなさかなw
161 :デフォルトの名無しさん :2017/09/05(火) 12:46:08.24 ID:pAPclJg5.net RMarkdownを使い始めると分析とレポート作成が同時にできるので便利さを感じると思うけどな
162 :デフォルトの名無しさん :2017/09/06(水) 12:00:48.68 ID:DOMpq9nC.net Pandas
163 :デフォルトの名無しさん :2017/09/06(水) 17:41:06.32 ID:1PfKZvMD.net >>161 うむ。あれはいいものだ。
164 :デフォルトの名無しさん :2017/09/07(木) 08:59:11.93 ID:Omz9mDs1.net jupyter
165 :デフォルトの名無しさん :2017/09/09(土) 10:59:21.18 ID:9IxpzJRD.net なるほどと思ったブログがあったから貼っとくよ yhat | R for Excel Users http://shotwell.ca/blog/post/r_for_excel_users ある特定の環境での成功体験が新たな環境への適応の障害となるのは エクセルからRに限ったことではないと思う
166 :デフォルトの名無しさん :2018/02/09(金) 21:23:26.98 ID:8uzFrfmd.net Rが盛り上がらなくて悲しい
167 :デフォルトの名無しさん :2018/02/10(土) 22:42:50.82 ID:fkUAhOd/.net 大盛り上がりと言ってもいいんじゃない? https://insights.stackoverflow.com/trends?tags=r
168 :デフォルトの名無しさん :2018/02/11(日) 00:58:01.63 ID:WMQeXuiD.net 上限100%の上部90%以上カットしたらそうなるわ
169 :デフォルトの名無しさん :2018/02/11(日) 11:54:36.80 ID:jK1XmpcF.net >>166 それは仕方ないと思うよ 統計解析手法開発用には向いているソフトだけど 統計解析を利用した処理アプリで使うのに向いている ソフトウエアというわけじゃなく 無償なんで大学でも採用して広まっているという話だから。
170 :デフォルトの名無しさん :2018/02/11(日) 12:28:34.22 ID:aLeqVhz7.net 放送大学の講座は親切 https://vod.ouj.ac.jp/view/ouj/#/navi/vod?ca=496
171 :デフォルトの名無しさん :2018/02/11(日) 13:02:45.83 ID:aKIhhURz.net >>156 Rになった S-plusやってたTIBCOもRの別実装始めたくらい
172 :デフォルトの名無しさん :2018/02/11(日) 13:37:06.23 ID:jK1XmpcF.net そりゃ当然の流れやな。
173 :デフォルトの名無しさん :2018/02/11(日) 17:47:44.11 ID:Pwi4tm3/.net >>167 右肩上がりなのはとても良いこと 純粋なプログラミング言語じゃないから増えてるだけで御の字なのかねえ
174 :デフォルトの名無しさん :2018/02/14(水) 19:42:52.67 ID:SwEfqZxS.net データをこねくり回してグラフ書くにはexcelより融通が利いてしかも早い ような気がする
175 :デフォルトの名無しさん :2018/02/14(水) 22:01:38.62 ID:NrdtujHN.net >>174 そりゃそうでしょうね Excelはこねくり回さないで使うためのツールだから
176 :デフォルトの名無しさん :2018/02/14(水) 23:37:10.00 ID:2fmZYg83.net グラフはggplot2が強力だよね facetとかはExcelだと大変 デフォルトのテーマが少し古くさいけど
177 :デフォルトの名無しさん :2018/02/14(水) 23:51:00.08 ID:ePIYSj2R.net R使い出してから色々と試すのが簡単なんで面白いわ
178 :デフォルトの名無しさん :2018/02/15(木) 01:24:08.19 ID:Udxebxf+.net 機械学習とかビッグデータとかPythonと何かの組み合わせに圧倒されててRとかどマイナーになってしもうた
179 :デフォルトの名無しさん :2018/02/15(木) 06:34:31.40 ID:/0tLiEBT.net 適材適所でしょうね。 元々設計自体がデカいメモリーがあったあらと言う前提で 設計者にとっては作りが楽だけど、大容量で使う利用者が 対処しないといけないという安易なつくりなんですよね。 その代り少量データを対象とした統計手法研究などには 楽なんで。
180 :デフォルトの名無しさん :2018/02/15(木) 12:27:10.58 ID:wFR1obku.net Rにはなんといってもtidyverseがあるからなあ dplyrとかpurrrとか簡単で強力だから解析やるならR まあ適材適所で、ベイズならstanだし、機械学習や文字ならPythonが優勢、事務処理ならExcelVBAってとこ
181 :デフォルトの名無しさん :2018/02/19(月) 19:54:51.25 ID:OYvsmEoK.net >>170 統計って回帰分析から急に難解になる それにじっと耐える生徒さんは偉い R初心者の私にはとっても役立つ講義だ
182 :デフォルトの名無しさん :2018/02/22(木) 18:00:01.85 ID:+IAzRovj.net 何かいいエディタないかな Rに最初からついてるエディタ使ってるけど不便
183 :デフォルトの名無しさん :2018/02/22(木) 19:41:30.41 ID:wBIv7NWL.net RStudioのエディタじゃだめかい?
184 :デフォルトの名無しさん :2018/02/23(金) 17:28:14.29 ID:0tA6Y4q1.net >>181 紫布さんかわいい
185 :デフォルトの名無しさん :2018/02/23(金) 20:13:41.57 ID:1VhTlckH.net >>183 RStudioは2,3回インストールしてみたけど良く分からないし重いしですぐ消してしまってたんだよね 慣れると便利なの?
186 :デフォルトの名無しさん :2018/02/23(金) 21:18:49.28 ID:L8hk+ob/.net RStudioのエディタは入力補完機能が凄い便利。パッケージの関数だけでなく自分で作った変数や関数も補完してくれる。 関数のヘルプもキー一つで表示できるし、ノートブック機能を使えばエディタ内で実行結果を表示してくれる。 その他、パッケージ管理とかプロジェクト管理とか便利だと思う。
187 :デフォルトの名無しさん :2018/02/25(日) 16:50:33.30 ID:3M2goUSG.net 具体的な話を聞くと便利そうな気がしてくる やっぱりRStudioがベストなのかもね しばらく使ってみようかな、ありがとう
188 :デフォルトの名無しさん :2018/02/26(月) 12:53:30.71 ID:XW8rTQGI.net 補完機能なしでプログラミングするのって、武器を持たずに福岡の街を歩くようなものだよ。
189 :デフォルトの名無しさん :2018/02/26(月) 18:57:28.32 ID:SIjqaO4S.net こえぇぇぇ
190 :デフォルトの名無しさん :2018/03/03(土) 09:23:09.96 ID:lZ+hoanu.net 初心者には Rコマンダーは便利だが 基本が理解するのが課題
191 :デフォルトの名無しさん :2018/03/14(水) 02:41:29.02 ID:4vL4k9pB.net R version 3.4.3 でR consoleを起動した直後に乱数を発生させると set.seedで指定していないのに前回起動時と同じ乱数が出てしまいます。たとえば runif(5)だと [1] 0.3108217 0.4556531 0.2194121 0.6496887 0.2677915 が毎回出てきます。 そういのものなのでしょうか?
192 :デフォルトの名無しさん :2018/03/14(水) 02:55:44.49 ID:2RQsDUO9.net >>191 R x64 3.4.1(windows10)ではそれを再現できなかった そういうものではないと思う
193 :デフォルトの名無しさん :2018/03/14(水) 13:07:49.78 ID:4vL4k9pB.net >>192 ありがとうございます。そうなんですか。自分の環境はwin7sp1 64bit で Rは5年前にインストールしその後何度か上書きインストールしたまに使っててたんですが 何らかの理由でRの中の設定が変更されたか破壊されてるんですかね 原因がわかったらまた書きます。
194 :デフォルトの名無しさん :2018/03/14(水) 14:55:10.28 ID:wgcmBZf4.net >>191 R3.4.3@Win10だけどそういう状態にはならないねえ。RStudioとかVSCodeとかでも何度かやってみたけど全て違う値。 事前にhtmlwidgetとか使ってない?
195 :デフォルトの名無しさん :2018/03/14(水) 16:28:52.83 ID:4vL4k9pB.net >>191 です 試しに別のフォルダに新規インストールして何度か起動を繰り返して確認してみたら 正常に毎回違う乱数がでました。 なのでもう新規インストールで実行することにしました。 でも、どこに問題があるのか特定しないとまた起きそうなので少しづつパッケージを削除しつつ確認中・・・ >>194 ありがとうございます。 htmlwidgetsって何?って感じなんですが入ってました。 いつ何のために入れたのかもわからないのですが(笑)
196 :デフォルトの名無しさん :2018/03/14(水) 17:15:01.96 ID:4vL4k9pB.net >>191 です。 パッケージの問題ではなくて、パッケージの作者の方々疑ってごめんなさい どうも>>194 さんの指摘どおり事前になにかが読み込まれてること気づきました 起動直後にカーソルの↑を押すとなぜか 昔コンソールで打ち込んだコマンドが未だに出てきちゃうんです たとえば、 > source('~/R/test.r')
197 :デフォルトの名無しさん :2018/03/14(水) 17:57:53.40 ID:wgcmBZf4.net .Rhistoryがおかしくなっちゃったのかな?まあ、原因が分かってなにより?
198 :デフォルトの名無しさん :2018/03/14(水) 18:20:45.09 ID:4vL4k9pB.net >>191 です。 原因がわかりました。 [Previously saved workspace restored]と出てることに今気づきまして 以前マイドキュメントに保存していたワークスペースが自動で読み込まれるためでした。 でもなぜか、"test.RData"の名前で保存したものは自動で読み込まれず ".RData"のように拡張子のみのファイル名が存在するとそれが読み込まれるようです。 新規インストールのRではがあっても読み込まれないのですが、 試しにC:\Program Files\R\R-3.4.3\bin\x64のフォルダ内にコピペしたら起きるようなので 変な名前やいけない場所には保存しては駄目ってことですね ありがとうございました。
199 :デフォルトの名無しさん :2018/03/14(水) 18:21:46.77 ID:2RQsDUO9.net .Rhistoryでset.seed()使ってるってことなのか
200 :デフォルトの名無しさん :2018/03/14(水) 18:55:36.14 ID:4vL4k9pB.net >>199 うちのマシーンの環境がめちゃくちゃの可能性もありますが、 新規インストール直後のコンソールで保存したワークスペースをそれで読み込んでも 同じ乱数が再現されるので 保存した時のその後の乱数生成パターンも復元されると解釈しちゃいました。
201 :デフォルトの名無しさん :2018/03/14(水) 18:58:12.34 ID:QlFm0BKE.net はぇ〜 そういや最近出たブルーバックスのRの本が売れてるみたいだね
202 :デフォルトの名無しさん :2018/03/14(水) 19:38:47.73 ID:wgcmBZf4.net >>200 環境の自動復旧は無効にしておいた方がいいよ。ググれば無効にする方法が見かるハズ… >>201 あの本、ブログか何かで宣伝してたよ。センセーショナルな見出しだったな。
203 :デフォルトの名無しさん :2018/03/14(水) 19:42:24.61 ID:wgcmBZf4.net この記事だ ttps://lab-on.jp/article/23
204 :デフォルトの名無しさん :2018/03/20(火) 10:02:37.61 ID:5CLL2roU.net その本を買ってPCで真似してます Rコマンダーのお陰で敷居は下がりました Rの壁は 出力データの読み方、意味するところの理解 質のよいデータはあるので頑張る
205 :デフォルトの名無しさん :2018/03/20(火) 11:50:41.25 ID:rZb/Vl03.net 敷居が高いと思ってる人のためのセミナーが明日、白金台の明学で開催されるよ http://www.socialpsychology.jp/seminar/seminar2.html
206 :デフォルトの名無しさん :2018/03/20(火) 12:11:32.56 ID:QFcU3Atb.net 共立出版のRで学ぶデータサイエンスシリーズの15巻とか16巻は ずっと欠けてるけどいつ出るのですか?
207 :デフォルトの名無しさん :2018/03/21(水) 13:46:02.45 ID:lT80+4ah.net >>203 jupyter notebook と pandas 最強だな
208 :デフォルトの名無しさん :2018/03/27(火) 23:23:26.50 ID:88y58jW2.net エクセルソルバーのGRGみたいな非線形最適化制約有りをやりたいんだけど、Rでもできる?
209 :デフォルトの名無しさん :2018/03/29(木) 21:47:07.36 ID:QFtrDbDX.net >>204 です 読み終えた、とても勉強になりました 困難さはRではなく統計学でしたが これは実践するしかないですね 気になったとこは頭に入れておきます P112の3次元散布図ですが Microsoft R Open version3.4(64bit)では 作図が表示されませんでした
210 :デフォルトの名無しさん :2018/03/30(金) 15:16:43.56 ID:zQBQo8b3.net おめ
211 :デフォルトの名無しさん :2018/05/17(木) 10:20:38.86 ID:X8D7/hwr.net Rをかじっても やはり、考え方がわかってないとだめだね ということで、 「入門はじめての分散分析と多重比較」を読んでる
212 :デフォルトの名無しさん :2018/05/17(木) 17:50:52.94 ID:4WSqYyn0.net Rだけとりあえず使えても、統計学がわかるわけじゃないからねw しかし慣れるとデータ扱うだけでも便利だなぁ。 でもちょっと不安なのが、変数が隠せないから自分で書いた変数とパッケージ内の関数が 偶然だぶったりしないもんなのかな・・・ってところ。 どうなん?
213 :デフォルトの名無しさん :2018/05/17(木) 18:14:17.63 ID:0I05aDJU.net そのあたりは「名前空間」で調べて見るといいよ
214 :デフォルトの名無しさん :2018/05/17(木) 21:17:22.96 ID:4WSqYyn0.net ふむ。 ありがとう。
215 :デフォルトの名無しさん :2018/05/19(土) 07:34:08.00 ID:KMcR+K4m.net ダブっても問題無いんじゃない? パッケージの変数を上書きしてしまう理由として考えられるのは 1. 知らずに上書きしてしまう 2. 知っててあえて上書きする だけど、どちらの場合も元の変数を使わないだけの気がする 安心するには実際にパッケージを壊してみるのも手かも 理由は異なるけど変数スコープの問題でwithを使ってる my = list (`%>%` = purrr::`%>%`, json = jsonlite::toJSON, id = function (x, ...) x); my = with (my, { id (1 : 10) %>% json %>% print; # my環境の変数を使う rocal = 123; rocal %>% print; # rocalは外から見えない my $ environment = function (...) 'hello world'; # 勧められないけど無問題 my $ try = tryCatch; # あえて上書き my; }); with (my, { try (typeof (rocal), error = function (ex) 'rocal is local') %>% print; environment (try) %>% print; # hello world base::environment (try) %>% print; # my$tryの環境はbase base::environment (try) = base::environment (); # my$tryの環境をmyに変更 tryCatch (try (stop ('try'), error = function (ex) 'catch') %>% print , error = id) %>% print; # my$tryが壊れた my$environmentが悪さ base::try (stop ('try')) %>% print; # base::tryは無傷 base::environment (try) = parent.env (base::environment ()); # my$tryの修理 try (stop ('try'), error = function (ex) 'catch') %>% print; # my$tryの復活 }); てな感じ 多くのサンプルでwithにデータフレームを代入してるけどリストでもオケー 小さな計算をいくつもする時にお手軽だと思う
216 :デフォルトの名無しさん :2018/05/19(土) 09:59:21.70 ID:tLdbKYkS.net 今から学ぶならJuliaにせい Rよりずっと速い、書きやすい
217 :デフォルトの名無しさん :2018/05/19(土) 11:12:53.58 ID:ijkQlh0o.net うむ
218 :デフォルトの名無しさん :2018/05/19(土) 13:40:20.91 ID:0pyI5MQK.net まあ、rocalとか書いちゃうのが
219 :デフォルトの名無しさん :2018/05/23(水) 19:12:36.38 ID:Au5e7VGg.net 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 6O1Q6
220 :デフォルトの名無しさん :2018/05/24(木) 10:36:25.46 ID:cPlRxlDn.net 6O1Q6
221 :デフォルトの名無しさん :2018/06/03(日) 23:20:33.44 ID:fG0CD0s1.net >>135 あるよ ``` {python} def joking (a, b): while True: a, b = b, a + b; yield b; ``` ``` {r} with (new.env (), { obj = reticulate::py $ joking (0, 1); sapply (1 : 10, function (...) reticulate::iter_next (obj)); }); ``` もっとマシというより楽しい解答はこれかな 読んでないけど * [Python-like generators in R ・ GitHub](https://gist.github.com/klmr/d10623a0b4c7e1e9a6523eebee4913d1) で、最終的な答えは「ない」だと思う 技術的な問題というより文化的なところに理由がある気がする pythonにパイプ演算子がないのと同じ理由 実用的なyieldを実装しようとすると文法の修正が必要になると思う 言語仕様の複雑化という投資が必要になるので それなりの需要が見込めないと導入には踏み切れないかもね フィボナッチ数列ではyieldの有り難みは見えないけど 自動微分とは比較にならないほど汎用性の高い有り難い機能だと思う だけど自動微分と似ているところがあって どんな複雑なニューラルネットも泣けば自前で微分できるし どんな複雑な関数のyieldも泣けば自前でイテレーターを作れる
222 :デフォルトの名無しさん :2018/07/04(水) 22:35:50.56 ID:gFgZc5FG.net Y4M
223 :デフォルトの名無しさん :2018/07/05(木) 12:07:37.96 ID:IcGtf/nv.net fib = lambda n: int(((1+sqrt(5))/2)**n/sqrt(5) + .5)
224 :デフォルトの名無しさん :2018/07/05(木) 13:10:49.78 ID:dgq1boj0.net >>216 初めてききました。 調べたら6年前につくられてるようですが 書籍はほとんどないようですね。 なんで普及してないのでしょうか。
225 :デフォルトの名無しさん :2018/07/05(木) 13:11:04.45 ID:dgq1boj0.net >>216 初めてききました。 調べたら6年前につくられてるようですが 書籍はほとんどないようですね。 なんで普及してないのでしょうか。
226 :デフォルトの名無しさん :2018/07/05(木) 19:49:27.60 ID:rQMQmwLl.net Juliaのこと? 本屋では単行本は1冊しか見かけないな。 あと、「データサイエンティスト養成読本 R活用編」というムック本の中に若干の記事があるくらいかな。 他にある? たぶん書籍が少ないのと、蓄積されたノウハウとか他人の作った関数とか少ないから まだみんな食いつかないんじゃないかな。 自分もなんか良さげではあると思いつつRで済ましてるしw
227 :デフォルトの名無しさん :2018/08/19(日) 22:19:39.16 ID:XMFPI6Qk.net >>217 http://blogimg.goo.ne.jp/user_image/45/bc/b6502c7b8c0d62a058342de43d82770b.jpg
228 :デフォルトの名無しさん :2018/08/20(月) 13:18:00.41 ID:h5lNG6L+.net JuliaはFORTRANっぽくて嫌い
229 :デフォルトの名無しさん :2018/10/13(土) 00:57:54.92 ID:nYuf7UeR.net 盛り上がっていたので貼っとく 読んでないけど Faster R with FastR | Hacker News https://news.ycombinator.com/item?id=18193557 FastRを使う人は少ないかもしれないけど 中のおしゃべりは楽しめるかも
230 :デフォルトの名無しさん :2018/10/21(日) 20:53:08.73 ID:Krx7NB8L.net 個人的にはRotaさんの名前がここで出てきたことに驚き こういうところがHNの面白さかも Deriving the Normal Distribution | Hacker News https://news.ycombinator.com/item?id=18261892 正規分布からの連想で コメントにあるインタラクティブなデモに感心 A tutorial on Principal Component Analysis | Hacker News https://news.ycombinator.com/item?id=18256048 ブログの最後に書いてあるけど 現状はインタラクティブを実現するには 鬼プログラミングが必要なのかもしれない インタラクティブからの連想で Distill ― Latest articles about machine learning https://distill.pub/
231 :デフォルトの名無しさん :2018/10/21(日) 21:25:09.40 ID:Kw4h2adz.net ggmap使えなくなってた Googleにクレカ登録が必須なのか
232 :デフォルトの名無しさん :2018/10/21(日) 21:51:09.06 ID:Krx7NB8L.net ggmapってなんだか知らないけどこの辺の話かな? Change in Google Geocoding API billing Issue #227 dkahle/ggmap GitHub https://github.com/dkahle/ggmap/issues/227 お買い上げありがとう御座います
233 :デフォルトの名無しさん :2018/11/17(土) 16:28:05.14 ID:2G9ByxL2.net >>39 20年後になりそう
234 :デフォルトの名無しさん :2018/11/18(日) 12:04:28.90 ID:uaqKqGAI.net もう5年経ったか 機械学習データマイニングω流行ってるのに1/4スレも消費していない 次の3/4スレは15年じゃまだ余るだろう
235 :デフォルトの名無しさん :2018/11/23(金) 11:50:10.19 ID:9Kaby9nf.net 数学板のRスレのほうが賑わってるのがRらしい
236 :デフォルトの名無しさん :2018/11/23(金) 12:00:16.91 ID:e4GZHgy/.net 過疎ってるな
237 :デフォルトの名無しさん :2018/11/23(金) 12:05:27.19 ID:Pgxq5bWC.net 数学板って基地外が多いので嫌いw
238 :デフォルトの名無しさん :2018/11/23(金) 12:29:41.52 ID:e4GZHgy/.net 基地外かどうかは知らんがほぼ全員コミュ障
239 :デフォルトの名無しさん :2018/11/23(金) 12:44:03.46 ID:Pgxq5bWC.net そしてリアルの理学部数学科の雰囲気に非常によく似ている。
240 :デフォルトの名無しさん :2018/11/23(金) 19:08:15.85 ID:HdYQqxXc.net Rのマニアルを見たら関数のパラメータがやから多くてびびった
241 :デフォルトの名無しさん :2018/12/02(日) 00:14:30.40 ID:F+Dh0l9r.net Rは難しいね =と<-が違うとか、forループ使うなとか
242 :デフォルトの名無しさん :2018/12/02(日) 00:17:55.74 ID:h7LAbm0n.net Rは簡単やろ?forは禁止されてなく使っても構わない。 けどベクトル演算に持ち込んだほうが圧倒的に速い処理があるってだけの話。
243 :デフォルトの名無しさん :2018/12/02(日) 00:57:29.97 ID:F+Dh0l9r.net プログラミングの基礎がないから、データフレームをnestしてmutateからのmap_dblという教科書的な処理すら少したつと忘れてしまうわ
244 :デフォルトの名無しさん :2018/12/02(日) 02:04:11.19 ID:FcEDVbnE.net それは難しいやつや
245 :デフォルトの名無しさん :2018/12/03(月) 00:40:44.81 ID:v0ZTRD/a.net コンパイラー以外では余り語られないかもしれないパーサーの話 The new pqR parser, and R’s “else” problem https://www.r-bloggers.com/the-new-pqr-parser-and-rs-else-problem/ elseはC言語もしくはもっと古い言語の理論的バグと言ってもいいかも Dangling else - Wikipedia https://en.wikipedia.org/wiki/Dangling_else yacc/bisonの問題にエラーメッセージが理解不能なことがある Yacc is dead https://arxiv.org/abs/1010.5023 yaccそのものというよりbisonとの間で情報の欠落が起きるらしい Yacc is Not Dead (2010) | Hacker News https://news.ycombinator.com/item?id=8782218 パーサーを自動生成するのは人間がプログラミングするには複雑過ぎるからだけど 複雑 in 理解不能 out あれ?何処かで見たような おまけ:現在のニューラルネットの興隆は彼との対話が起点らしい Geoff Hinton Facts http://yann.lecun.com/ex/fun/
246 :デフォルトの名無しさん :2018/12/14(金) 21:02:39.08 ID:mqIEWKkx.net >231 斜め読みできる分量ではないけどオーサムらしい Free online book: Geocomputation with R, a book on geographic data analysis, visualization and modeling : rstats https://www.reddit.com/r/rstats/comments/a5tmht/free_online_book_geocomputation_with_r_a_book_on/ Geocomputation with R - the afterword | R-bloggers https://www.r-bloggers.com/geocomputation-with-r-the-afterword/ 各トピック毎に使えるソフトウェアの紹介があるので乗り換えの参考になるかも 中に書いてあるようにギットハブにもリソースがある GitHub - Robinlovelace/geocompr: Open source book: Geocomputation with R https://github.com/Robinlovelace/geocompr#geocomputation-with-r Geocomputation with R https://geocompr.github.io/
247 :デフォルトの名無しさん :2018/12/15(土) 11:21:36.85 ID:Bi+PDTnJ.net >>246 ありがとう こんな良さげな資料が公開されてたとは でもggmapのように地図(日本語)に図形やテキストをプロットした画像を出力する手法は載ってないみたいで残念
248 :デフォルトの名無しさん :2018/12/16(日) 00:23:14.49 ID:Uu+EjExy.net こういう話ではないと思うけど ``` {r} leaflet::leaflet () %>% leaflet::addTiles () %>% leaflet::addMarkers ( lng = 174.768, lat = -36.852, popup = 'The birthplace of R' ) %>% leaflet::addLabelOnlyMarkers ( lng = 174.768 + 0.01, lat = -36.852, label = '此処は何処ですか?' , labelOptions = leaflet::labelOptions ( noHide = T, textOnly = T, opacity = 1, style = list ( 'font-size' = '2ex', 'color' = 'red' ) ) ) %>% leaflet::addRectangles ( lng1 = 174.768 - 0.02, lat1 = -36.852 - 0.02 , lng2 = 174.768 + 0.02, lat2 = -36.852 + 0.02 ) ```
249 :デフォルトの名無しさん :2018/12/16(日) 18:28:48.34 ID:ye4z5ExT.net leafletではさすがに希望には合わないかな 仕事で自分のクレカ使うのも嫌だし、こういう有料化は困る
250 :デフォルトの名無しさん :2019/02/02(土) 18:39:54.09 ID:QulgKzxC.net タイトル勝ち - envのハッシュテーブルとしての使い方 Hash Me If You Can | R-bloggers https://www.r-bloggers.com/hash-me-if-you-can/ 分散の占有率は考えたことがなかった Principal Component Analysis (PCA) 101, using R : rstats https://www.reddit.com/r/rstats/comments/akytig/principal_component_analysis_pca_101_using_r/ PCAネタでOjaの学習則 - ご本人による解説 Oja learning rule - Scholarpedia http://www.scholarpedia.org/article/Oja_learning_rule スティーフェル多様体上の勾配 The Geometry of Algorithms with Orthogonality Constraints https://arxiv.org/abs/physics/9806030 動機と出発点は異なるが同一の微分方程式を導き出してる 対称行列の大きい方の固有ベクトルを求める問題は次のようにも書ける given M: (n,n)対称行列, to be found X: (n,k)行列 argmax <X, M X> subject to <X, X> = 1, where <A, B> := tr (A^T, B) subject to ...の部分がスティーフェル多様体の定義になっている 特に、k=1の場合は(n-1)次元単位球面になる 身近にある多様体の例になっていると思う
251 :デフォルトの名無しさん :2019/02/02(土) 19:02:21.25 ID:QulgKzxC.net 間違え subject to X^T X = (k,k)単位行列
252 :デフォルトの名無しさん :2019/02/22(金) 22:52:15.13 ID:+pFzFvdM.net ``` {Rcpp} #include <Rcpp.h> // 「rcpp 参照渡し」で検索すると出てくる話題 // [[Rcpp::plugins(cpp14)]] // [[Rcpp::export]] SEXP unsafe_negate (SEXP out) { // コピーなしを確実にするために面倒だがSEXP switch (TYPEOF (out)) { // 思いつく残りのキーワード: Rtools on Windows, case REALSXP: { // knitr::all_rcpp_labels, RCPP_MODULE, Rcpp/dispatch.h. Rcpp::NumericVector a (out); // RCPP_MODULE = boost::python std::transform (a.begin (), a.end (), a.begin (), std::negate <double> ()); return out; // https://wiki.python.org/moin/boost.python/HowTo } break; default: { // R 3.5以上で動くかわからない throw std::runtime_error ("unsupported type"); } break; // https://purrple.cat/blog/2018/10/14/altrep-and-cpp/ } // デビアン系だけかもしれないけど、Rstudioの環境下ではC++が超お手軽 } // [[Rcpp::export]] Rcpp::NumericVector safe_negate (Rcpp::NumericVector inn) { Rcpp::NumericVector out = Rcpp::no_init (inn.size ()); std::transform (inn.begin (), inn.end (), out.begin (), std::negate <double> ()); return out; } ```
253 :デフォルトの名無しさん :2019/02/22(金) 22:55:11.29 ID:+pFzFvdM.net 残りを貼り忘れた ``` {r} a = 1.0; b = safe_negate (a); cat (a, '->', b); # 1 -> - 1 a = 1.0; b = unsafe_negate (a); cat (a, '->', b); # - 1 -> - 1 ```
254 :デフォルトの名無しさん :2019/02/24(日) 02:20:59.21 ID:46dkn3Pk.net 統計使ってオプションの自動売買したいんですけど これ使えばできるようになりますかね?
255 :デフォルトの名無しさん :2019/02/24(日) 13:00:49.75 ID:EIdikGBL.net もう30年近く前からいっぱい使われてるよ。 それより統計知識と業務知識が先にないとあかんよ。
256 :デフォルトの名無しさん :2019/03/16(土) 22:01:31.43 ID:NxubCN5z.net 最近ハマったRの文法 ``` {r} tryCatch ({ f = function (x) { x + 1; } + 1; cat (f (1)); }, error = function (ex) { cat (ex); }); ``` 落とし穴というより他のプログラミング言語からの固定観念に縛られていた jsと対比してみる <pre id = 'dump'></pre> ``` {js} $ (window).on ('load', function () { try { const f = function (x) { x + 1; } + 1; $ ('#dump').html (f (1)); } catch (ex) { $ ('#dump').html (ex); } }); ```
257 :デフォルトの名無しさん :2019/03/21(木) 11:09:31.67 ID:FMbOnfHj.net 仕事で急遽Rを勉強している者です。 rvestを用いたスクレイピングについて解る方 いらっしゃいましたらご教授願います。 @下記ページを参考に rvest html_sessionで「次へ」のリンクを辿ってURLを抜き出し http://estrellita.hatenablog.com/entry/2015/11/11/084310 AそのURLをリストに追加して Bread_html をかけようとしてるんですが Cno applicable method for 'xml_find_all' applied to an object of class "list" とエラーが出てしまいます。 無知で申し訳ないのですが、原因と解決法わかりますでしょうか?
258 :デフォルトの名無しさん :2019/03/21(木) 23:21:26.63 ID:2X9Nl1zM.net わかる人が来るまでのつなぎ - 30年以内に来ればラッキーだと思うけど * ['rvest::html' is deprecated, but rvest::read_html doesn't exist. Issue #191 tidyverse/rvest GitHub](https://github.com/tidyverse/rvest/issues/191) * [rvest package | R Documentation](https://www.rdocumentation.org/packages/rvest/versions/0.3.2) ``` {r} with (list (`%>%` = purrr::`%>%`, size = length, null = NULL), { home = 'https://stackoverflow.com'; depth = 0; done = list (); todo = list ('/questions/28863775/scraping-linked-html-webpages-by-looping-the-rvestfollow-link-function'); while (0 < size (todo) & depth < 2) { depth = depth + 1; done = c (done, todo); todo = purrr::reduce (.init = null, .x = todo, .f = function (out, path) { url = paste0 (home, path); text = xml2::read_html (url); nodes = rvest::html_nodes (text, css = '.related a.question-hyperlink'); purrr::reduce (.init = out, .x = nodes, function (out, node) { path = rvest::html_attr (node, 'href'); if (path %in% done) { cat ('what a small world:', path, '\n'); out; } else { cat ('i am going to stalk:', rvest::html_text (node), '\n'); c (out, path); } }); }); } }); ```
259 :デフォルトの名無しさん :2019/03/21(木) 23:54:04.09 ID:ZeSQsBE1.net no applicable method for 'xml_find_all' applied to an object of class "list" あちこちの変数をデバッグすれば? まず、エラーの場所を特定するべき! スクレイピングには、Ruby, Nokogiri, Selenium WebDriver が良い
260 :デフォルトの名無しさん :2019/03/22(金) 12:52:49.39 ID:s6oj+Xdm.net なんで、こういうツールってDOMでのスクレイピングじゃないの? 覚えるの面倒なんだ。
261 :デフォルトの名無しさん :2019/03/22(金) 22:45:06.06 ID:+8Wqz6u2.net バグ修正 if (path %in% done | path %in% out) { cat ('what a small world:', path, '\n'); out; } else { cat ('i am going to stalk:', rvest::html_text (node), '\n'); c (out, path); }
262 :デフォルトの名無しさん :2019/03/24(日) 22:07:13.75 ID:EjBOavUP.net 楽しいライブラリ * [Lego Mosaics Using R | Hacker News](https://news.ycombinator.com/item?id=19469142) ライブラリの階層としては [rgl](https://github.com/cran/rgl)/ [rayshader](https://github.com/tylermorganwall/rayshader)/ [brickr](https://github.com/ryantimpe/brickr)/ という感じかな? Rのライブラリというと変化球勝負というイメージを持っているのだけど rglは豪速球な気がする
263 :デフォルトの名無しさん :2019/03/26(火) 19:24:08.41 ID:NbUyZWCM.net 誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 81137 https://you-can-program.hatenablog.jp
264 :デフォルトの名無しさん :2019/04/13(土) 23:21:10.50 ID:VsnrGDId.net * [TF-IDF in a nutshell](https://www.reddit.com/r/LanguageTechnology/comments/bb5bcr/tfidf_in_a_nutshell/) [TF-IDF](https://en.wikipedia.org/wiki/Tf%E2%80%93idf) が覚えられないので [PMI](https://en.wikipedia.org/wiki/Pointwise_mutual_information) と関連付けてみる \newcommand{\nwd}[2]{\sharp\left\{{#1}\to{#2}\right\}} $X$を単語の有限集合、$Y$を文書の有限集合とする データを単語から文書への [二部グラフ](https://en.wikipedia.org/wiki/Bipartite_graph) として見て 辺の統計を考える | 記号 | 日本語の記号 | |:--|:----------------------------------| | $\nwd{x}{y}$ | 単語$x$の文書$y$での出現頻度 | | $\nwd{x}{*} := \sum_{y\in Y}\nwd{x}{y}$ | 単語$x$の全文書での出現頻度 | | $\nwd{*}{y} := \sum_{x\in X}\nwd{x}{y}$ | 文書$y$の長さ | | $\nwd{*}{*} := \sum_{x\in X,\; y\in Y}\nwd{x}{y}$ | 全文書の長さ | $$ \frac{P(x,y)}{P(x,*)P(*,y)} := \frac{\cfrac{\nwd{x}{y}}{\nwd{*}{*}}} {\cfrac{\nwd{x}{*}}{\nwd{*}{*}}\cfrac{\nwd{*}{y}}{\nwd{*}{*}}} = \underbrace{\frac{\nwd{x}{y}}{\nwd{*}{y}}}_{\approx\mathtt{TF}} \underbrace{\frac{\nwd{*}{*}}{\nwd{x}{*}}}_{\approx\mathtt{IDF}}. $$
265 :デフォルトの名無しさん :2019/04/28(日) 22:29:54.86 ID:Ce5AO+sY.net * [March: "Top 40" New CRAN Packages](https://www.r-bloggers.com/march-2019-top-40-new-cran-packages/) [lenses](https://cran.r-project.org/web/packages/lenses/index.html) というライブラリが入っている ゲット/セットのペアからスタートする [nlab](https://ncatlab.org/nlab/show/lens+%28in+computer+science%29) ではプットと書かれているがセットと同じ [イントロ](https://cfhammill.github.io/lenses/index.html) も簡潔な説明だと思う 「てか、`iris $ Sepal.Length [3]`という書き方で何も困っていないし」 と思うかもしれないけどそれは正常な感覚だと思う [この例](https://ncatlab.org/nlab/show/Grothendieck+group) はもっとビミョーな気分になるかもしれない 「ここで小麦粉を$1/3$カップ入れます」の$1/3$という書き方は [随伴](https://ncatlab.org/nlab/show/adjoint+functor) を表している 正の自然数からスタートした場合、Haskell風の書き方をして 直積に同値関係`Bunsu (a, b) == Bunsu (c, d) = a * d == b * c`を定義すると 単位射が`return a = Bunsu (a, 1)`で 積射が`join (Bunsu (Bunsu (a, b), Bunsu (c, d))) = Bunsu (a * d, b * c)`の モナドになる [この例](https://en.wikipedia.org/wiki/Simplicial_set) はRの`list (list (0 : 0), list (0 : 1), ..., list (0 : n))`という リストがつくる圏からスタートする UMAPの土台に使われているらしい * [UMAP](https://cran.r-project.org/web/packages/umap/vignettes/umap.html) * [How UMAP Works](https://umap-learn.readthedocs.io/en/latest/how_umap_works.html)
266 :デフォルトの名無しさん :2019/05/12(日) 09:01:18.88 ID:pEn1S/Mu.net Rで正規表現を使って文字列から数値だけ抽出するにはどう書きますか?
267 :デフォルトの名無しさん :2019/05/12(日) 12:36:17.67 ID:dSbddX8d.net Ruby では、\d で数字を、+ で1文字以上、to_i で整数型に変換する p ary = "1a23bc04".scan( /\d+/ ).map( &:to_i ) #=> [1, 23, 4] ただし、これでは、負数を処理できない。 負数を処理するには、- を、? で、0か1文字 p ary = "-1a23bc-04".scan( /-?\d+/ ).map( &:to_i ) #=> [-1, 23, -4] 小数点や、e 表記は、もっと難しい。 これらは正規表現じゃなく、ライブラリを探すべき!
268 :デフォルトの名無しさん :2019/05/12(日) 19:02:18.45 ID:x6u2BI6V.net どんな文字列か分からんけど単に数字を取り出すなら stringr::str_extract_allで[[:digits:]+]を指定すりゃいいのでは? パターンによってはreadr::parse_numberでいけるけど
269 :デフォルトの名無しさん :2019/05/13(月) 08:08:42.07 ID:6s+KaqGz.net >>268 ありがとうございます。無事目的を果たすことが出来ました。
270 :デフォルトの名無しさん :2019/05/13(月) 11:34:06.46 ID:exJVGP+w.net >>269 [[:digit:]+]だったね。いつも間違える。 最終的にどうやったか書いてくれると同じように困ってる人が助かるよ
271 :デフォルトの名無しさん :2019/05/13(月) 11:40:45.50 ID:hGBx9p/3.net >>270 そうですね、では貼っておきます。 str <- "10.5万人" res <- as.numeric(stringr::str_extract_all(str,pattern = "[0-9.]+"))
272 :デフォルトの名無しさん :2019/05/25(土) 22:50:11.34 ID:vpuLnRuv.net [The first web site](https://news.ycombinator.com/item?id=13356062) まで行くと古すぎだけど [Static Web - Back to the Roots](https://news.ycombinator.com/item?id=20006850) knitrでHTMLを作るときMathJaxをSVGに変換したくなることもある nodejsが動くようだと[MathJax-node](https://github.com/mathjax/MathJax-node) が簡単 Webネタで [Helping One Million Developers Exit Vim (2017)](https://news.ycombinator.com/item?id=19069526) Rを境に上位はWebのフロントエンドで下位は汎用プログラミング言語 つまり`R = (JQuery + Ruby) / 2` ウソだけどどんなウソにも真実がある気もする
273 :デフォルトの名無しさん :2019/05/25(土) 23:01:34.12 ID:WHAQulv7.net >>268 ま、Rubyで統計解析しなくてもいいんじゃね? 今のところ、信頼性保証できないでしょ
274 :デフォルトの名無しさん :2019/05/26(日) 04:23:56.29 ID:/W043sO9.net PerlからRuby覚えてかなり気に入っていたけど、最近の機械学習ブームで 完全にPythonに負けた感があるな 今から始める人にRubyやれとは言えなくなった Python一択の時代
275 :デフォルトの名無しさん :2019/05/26(日) 15:12:58.29 ID:KAaQkTQw.net わかればよろしい
276 :デフォルトの名無しさん :2019/05/27(月) 02:00:14.95 ID:WRD+8uFx.net 大学最後の2ヶ月で、元彼、好きだった人、女友達、男友達の合計500人の特性を全てデータ化して、関係の継続年数と好き度合いをアウトプットにして、Rでモデル組んだの。 それに結婚候補者の10人のデータいれて、1番結果良かったのが今の旦那で、付き合って結婚したの。本当に統計学は最強の学問。
277 :デフォルトの名無しさん :2019/06/09(日) 01:58:16.45 ID:wNZZZJ2C.net [so]{#so}: [Showing existence of a diffeomorphism preserving volume forms](https://math.stackexchange.com/questions/2731058) 一次元だと積分表が使えるので絵を描いてみる [so-1]{#so-1} ``` {r} big_data = list (`%>%` = purrr::`%>%`, add = rlist::list.append , size = length, null = NULL, true = T, false = F, na = NA); big_data = with (c (big_data, xa = 0, sa = 0.1, db = 1, sbm = 0.3 , sbp = 0.2), { pa = function (x) { dnorm (x, mean = xa, sd = sa); }; pb = function (x) { 0.5 * (dnorm (x, mean = - db, sd = sbm) + dnorm (x , mean = db, sd = sbp)); }; Pa = function (x) { pnorm (x, mean = xa , sd = sa); }; Pb = function (x) { 0.5 * (pnorm (x, mean = - db, sd = sbm) + pnorm (x, mean = db, sd = sbp)); }; ra = function (n) { rnorm (n , mean = xa, sd = sa); }; rb = function (n) { sample (c (rnorm (n , mean = - db, sd = sbm) , rnorm (n, mean = db, sd = sbp)), n); }; x = 3 * seq (- 1, 1, len = 1e+3); ya = pa (x); yb = pb (x); plot (range (x) , range (ya, yb), type = 'n'); lines (x, ya, col = 'blue'); lines (x, yb , col = 'red'); add (big_data, pa = pa, pb = pb, ra = ra, rb = rb, Pa = Pa , Pb = Pb); }); no_plot = function (text = 'space') { plot (c (0, 1), c (0 , 1), ann = F, bty = 'n', type = 'n', xaxt = 'n', yaxt = 'n'); text ( x = 0.5, y = 0.5, text);}; ```
278 :デフォルトの名無しさん :2019/06/09(日) 01:59:10.30 ID:wNZZZJ2C.net 青の分布を赤の分布に連続的に変形させる [so-2]{#so-2} ``` {r} big_data = with (c (big_data, nx = 2e+3, nt = 1e+3, alim = 2, blim = 4), { vec = function (x, t) { (Pa (x) - Pb (x)) / ((1 - t) * pa (x) + t * pb (x)); }; t = seq (0, 1, len = nt); dt = diff (t) %>% mean; x = ra (nx); x = x0 = x [which (abs (x) <= alim)]; x = purrr::map (t, function (t) { x <<- x + dt * vec (x, t); }) %>% do.call (what = rbind); draw = function (t, x, nbin = 20 , vector = null) { xlim = range (x, na.rm = true); plot ( xlim, range (t), type = 'n', main = 'trajectories', xlab = 'x', ylab = 't'); purrr::map ( sample (1 : ncol (x), 50), function (j) { x = x [, j]; if ( all ( is.finite (x))) { lines (x, t); } else { points (x, t); }; }); if ( is.function (vector)) { no_plot (); }; doit = function (ind) { t = t [ind]; x = x [ind, ]; if (is.null (nbin)) { nbin = 'scott'; }; msg = sprintf ( 'at the time %.1e', t); msg = c (msg, sprintf ('%d / %d', sum ( xlim [1] <= abs (x) & abs (x) <= xlim [2], na.rm = true), size (x))); hist (x, breaks = nbin, freq = false, xlim = xlim, main = msg); x = seq ( xlim [1], xlim [2], len = 1e+3); # lines (x, pa (x), col = 'blue'); lines (x, pb (x), col = 'red'); if (is.function (vector)) { x = seq (min ( xlim), max (xlim), len = 1e+5); plot (x, vector (t, x) %>% abs (), type = 'l', log = 'y', main = msg); }; }; for (i in c (1, size (t) / 2, size ( t))) { doit (i); } }; x = rbind (x0, x [- nrow (x), ]); x [which (blim < abs (x))] = na; fix_bin = function (x, lim) { max (sum (abs (x [nrow (x) , ]) <= lim , na.rm = true) / 50, 10) %>% as.integer (); }; draw (t, x , nbin = fix_bin (x, blim), vector = vec); add (big_data, x0 = x0, t = t , dt = dt , nt = nt, nx = nx, vec = vec, draw = draw, fix_bin = fix_bin , alim = alim, blim = blim);}); ```
279 :デフォルトの名無しさん :2019/06/09(日) 02:00:21.38 ID:wNZZZJ2C.net 逆方向に変形させてみる [so-3]{#so-3} ``` {r} with (c (big_data), { wec = function (x, t) { - vec (x, 1 - t); }; x = rb (nx); x = x0 = x [which (abs (x) <= blim)]; x = purrr::map (t, function (t) { x <<- x + dt * wec (x, t); }) %>% do.call (what = rbind); x = rbind (x0, x [- nrow (x), ]); x [which (blim < abs (x))] = na; draw (t, x, nbin = fix_bin (x, blim), vector = wec); }); ``` おしまい
280 :デフォルトの名無しさん :2019/06/16(日) 06:52:42.48 ID:PJMZgBiU.net [so-2](#so-2)のバグ:誤: `vector (t, x)` 正: `vector (x, t)` でも誤の方が素直 - 数式上は`vector :: Time -> (Position -> Vector)` $$\newcommand{\calM}{\mathcal{M}}\DeclareMathOperator*{\arginf}{arg\,inf}$$ $\calM$を多様体とし、その上の [経験分布](https://en.wikipedia.org/wiki/Empirical_distribution_function) $p:\calM\to(0,1)$が与えられた時、モデル$q:\Theta\to(\calM\to(0,1))$を [KL距離](https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence) $D$を使って、$\theta_*:=\arginf_{\theta\in\Theta}D(p,q_\theta)$と フィッティングするというのが典型的なパターンだと思う。[so](#so)では、 初期分布$\alpha:=q_0$と推定した分布$\beta:=q_{\theta_*}$を繋ぐ座標変換の 集合$\phi_t:\calM\to\calM$を具体的に作っている。写像$\phi_t$で$\alpha$が $q_t$になったとすると、<em>粒子数が保存すべし</em>という要請は次のように 書かれる。$$\int_{x\in\phi_t(D)} q_t(x) = \int_{x\in D} \alpha(x) \quad\text{for all}\quad D\subseteq\clM.$$$\phi_t(x)$が$x$について微分できる ことを仮定すれば、この式は$\phi_t^*q_t=\alpha$という形にまとめられ、 <em>$q_t$を$\phi_t$で [プルバック](https://en.wikipedia.org/wiki/Pullback_(differential_geometry)) すると$\alpha$になる</em>と読む。$\phi_t(x)$が$t$について微分できることと、 $x$について可逆なことを仮定すると、次の式が得られる。$$(\partial_t +d\iota_{X_t})q_t = 0\quad\text{with}\quad\phi_t^*q_t = \alpha\eqtag{adv}$$ 導出の経緯から、この式は頻出問題になっていて、 [移流](https://en.wikipedia.org/wiki/Advection) という名前がついているが、 あまりに頻出過ぎて、多くの分野で名無しになっていると思う。問題は、 <em>$q_1=\beta$となる$\eqref{eq:adv}$の解があるか?</em>ということになる。 [so](#so)では、Moserのトリックを使って、そのような解があることを示している。 もう少し続ける。
281 :デフォルトの名無しさん :2019/06/16(日) 06:54:12.80 ID:PJMZgBiU.net Moserのトリックの副産物として、$\eqref{adv}$は [ガウスの法則](https://en.wikipedia.org/wiki/Gauss%27s_law) になる。 $\calM$が一次元の場合、電場$\iota_{X_t}q_t$が [CDF](https://en.wikipedia.org/wiki/Cumulative_distribution_function) に、 クーロンポテンシャルがCDFの積分に対応する。CDFのような単調増加関数を [シグモイド関数](https://en.wikipedia.org/wiki/Sigmoid_function) で近似する ことは自然なことだろう。同じことだが、 [LogSumExp](https://en.wikipedia.org/wiki/LogSumExp) でCDFの積分を近似する ことも自然なことだろう。さらに、コードのように、初期分布と推定した分布が 局在化している場合は、局在箇所にシグモイドを対応させることで、効率的に 良い近似が得られる。 コードでバグったのはベクトル場$X_t$をプロットしているところだが、$X_t$の プロットは、動作確認にはなるが、変化が激し過ぎて挙動の理解には向いていない。 $X_t$の計算では、性質上、ゼロ割に近い状況が発生することが避けらない。コード では、そのケアに追われている。一方、Moserのトリックのおかげで、電場は時刻に 依存しない。シミュレーションを通して成り立つ大雑把な挙動の把握には電場の方が 向いている。 神経にできることは森にもお隣さんにもベイズにも安藤モアにもできる、多分。 逆も真なり。これに<em>ガウスにもできる</em>が加わっただけかもしれないが、 今まで気が付かなかった。 [ありがとう](https://www.youtube.com/watch?v=Fd3_uMxG608) 、 [いきものがかり](https://arxiv.org/abs/1806.07366) おしまい
282 :デフォルトの名無しさん :2019/06/29(土) 21:01:18.10 ID:Y06Oqd44.net [ggwaterfall](https://www.reddit.com/r/rstats/comments/c3rf6m/ggwaterfall_a_package_for_drawing_density_and/) を[DFT行列](https://en.wikipedia.org/wiki/DFT_matrix) をネタに使ってみる [参考](https://en.wikipedia.org/wiki/Chebotarev_theorem_on_roots_of_unity) ``` {r} with (c (big_data, n = 17, N = 1e+3), { out = outer (1 : n, 1 : n, function (i, j) { ij = (i * j) %% n; k = pracma::gcd (ij, n); angle = 2 * pi * (ij %/% k) / (n %/% k); complex (real = cos (angle), imaginary = sin (angle)); }); print (eigen (Conj (out) %*% out, only = true) $ value / n); out = purrr::map ((n - 2) : 2, function (k) { purrr::map (1 : N, function (.) { out = out [sample.int (n, k), sample.int (n, k)] %>% eigen (only = true); # prod (out $ values); prod (out $ values) / sqrt (k); }) %>% unlist (); }); `%.%` = function (f, g) function (x) f (g (x)); purrr::map (out, log %.% Mod) %>% ggwaterfall::waterfall_ft (); # purrr::map (out, log %.% Mod) %>% ggwaterfall::waterfall_density (); }); ```
283 :デフォルトの名無しさん :2019/06/30(日) 21:38:18.30 ID:6iFXy6Q7.net DFT行列のチェックのバグ修正+testthat+lenses ``` {r} with (c (big_data, n = 17, N = 1e+3, get = lenses::view, set = lenses::set), { `%.%` = function (f, g) function (x) f (g (x)); values_l = lenses::index ('values'); square = function (a) (t %.% Conj) (a) %*% a; out = outer (1 : n, 1 : n, function (i, j) { ij = (i * j) %% n; k = pracma::gcd (ij, n); angle = 2 * pi * (ij %/% k) / (n %/% k); complex (re = cos (angle), im = sin (angle)); }); testthat::test_that ('dft', { # testthat::expect_equal (square (out), n * pracma::eye (n)); testthat::expect_equal ((Re %.% square) (out), n * pracma::eye (n)); testthat::expect_equal ((Im %.% square) (out), pracma::zeros (n)); }); k = (n - 2) : 2; out = purrr::map (k, function (k) { purrr::map (1 : N, function (.) { out = out [sample.int (n, k), sample.int (n, k)]; out = eigen (out, only = true) %>% get (values_l); (sum %.% log) (out) - 1 / 2 * log (k); }) %>% get (lenses::unlist_l); }) %>% set (lenses::names_l, k); testthat::test_that ('det', purrr::map (out, function (out) { testthat::expect_true ((all %.% is.finite) (out)); })); purrr::map (out, Re) %>% ggwaterfall::waterfall_ft (show.labels = true); }); ```
284 :デフォルトの名無しさん :2019/07/06(土) 00:11:27.48 ID:EHwJE8LY.net バグ修正 誤:(sum %.% log) (out) - 1 / 2 * log (k); 正:(sum %.% log) (out) - k / 2 * log (k); 正規化の方法を修正する必要があるが DFT行列を[直交行列](https://en.wikipedia.org/wiki/Orthogonal_matrix) に変えても似た挙動をする 関係ははっきりしないが [この話](https://www.r-bloggers.com/two-interesting-facts-about-high-dimensional-random-projections/) を思い出した 新たにバグを生み出した可能性が高いがレンズの話 可逆な行列$M$でパラメトライズされたゲットを$\mathtt{get}_M(x):=Mx$とすると レンズ則を満たすセットが$\mathtt{set}_M(x,y)=M^{-1}y$と一意に定まる [レンズの可逆性](https://www.twanvl.nl/blog/haskell/isomorphism-lenses) の例になっていると思う レンズ則をチェックしてみる [setup]{#setup}
285 :デフォルトの名無しさん :2019/07/06(土) 00:12:22.12 ID:EHwJE8LY.net ``` {r} big_data = list ( `%>%` = purrr::`%>%` , add = rlist::list.append , size = length , null = NULL , true = T , false = F , na = NA); big_data = with (c (big_data, get = lenses::view, set = lenses::set, why = T), { plain = function (M) { if (why) { # avoid lazy evaluation if (is.matrix (M) != true | nrow (M) != ncol (M)) { stop ('parameter must be an invertible matrix.'); } } lenses::lens ( view = function (state) { as.vector (M %*% state); }, set = function (state, value) { as.vector (solve (M, value)); } ); }; value_l = lenses::index ('value'); make_state = function (value) { list (hello = 'world') %>% set (value_l, value); }; make_lens = function (M) { lenses::`%.%` (value_l, plain (M)); }; add (big_data, make_state = make_state, make_lens = make_lens, get = get, set = set); }); ```
286 :デフォルトの名無しさん :2019/07/06(土) 00:13:08.47 ID:EHwJE8LY.net ``` {r, cache = F} with (c (big_data, nx = 3, nt = 1e+3), { normalize = function (x) x / sqrt (sum (x * x)); testthat::test_that ('lens', purrr::map (1 : nt, function (.) { a = pracma::randortho (nx) %>% make_lens (); s = rnorm (nx) %>% normalize () %>% make_state (); x = rnorm (nx) %>% normalize (); y = rnorm (nx) %>% normalize (); testthat::expect_equal (s %>% set (a, s %>% get (a)), s); testthat::expect_equal (s %>% set (a, x) %>% get (a), x); testthat::expect_equal (s %>% set (a, x) %>% set (a, y), s %>% set (a, y)); })); }); ``` [setup](#setup)で`why`を`F`にするとテストが通らない どこにバグがあるかわからないが 遅延評価のチェインで露呈したバグになっている おしまい
287 :デフォルトの名無しさん :2019/07/06(土) 22:48:27.03 ID:EHwJE8LY.net 上のバグの再現 バージョンによるかもしれないし仕様なのかもしれない ``` {r} library (purrr); f_plain <- function (x) { function (y) { x + y; }; }; f_guard <- function (x) { x <- x; function (y) { x + y; }; }; tryCatch ({ x <- 1 %>% f_plain (); cat (x (2), 'success piped-plain\n'); }, error = function (msg) { cat ('failed piped-plain:\n'); print (msg); }); tryCatch ({ x <- 1 %>% f_guard (); cat (x (2), 'success piped-guard\n'); }, error = function (msg) { cat ('failed piped-guard:\n'); print (msg); }); ```
288 :デフォルトの名無しさん :2019/07/22(月) 01:06:05.12 ID:mXxEN3aK.net [イーガン予想](https://golem.ph.utexas.edu/category/2019/07/the_riemann_hypothesis_says_50.html) [嘘だけど](https://en.wikipedia.org/wiki/Greg_Egan) 小説の上手い数学の研究者もいれば 哲学の上手いPandocの開発者もいる いろいろな人がいる
289 :デフォルトの名無しさん :2019/07/22(月) 17:11:16.93 ID:vH3abWHg.net me too
290 :デフォルトの名無しさん :2019/09/01(日) 16:49:02.42 ID:MMeyHdZr.net RstudioからSSHでポートフォアードさせてDBに繋ぎたいのですがどのように記述すれば良いのでしょうか
291 :デフォルトの名無しさん :2019/09/01(日) 17:44:01.65 ID:kCJZVLuH.net ググればすぐ出る
292 :デフォルトの名無しさん :2019/09/01(日) 18:54:34.52 ID:MMeyHdZr.net 分からないならレスしないでくれる?
293 :デフォルトの名無しさん :2019/09/01(日) 18:56:27.67 ID:kCJZVLuH.net 情報の小出し禁止
294 :デフォルトの名無しさん :2019/09/02(月) 20:31:45.73 ID:j4A8QeU6.net わからないけどレスしてみました
295 :デフォルトの名無しさん :2019/09/03(火) 09:50:55.31 ID:gWEsYspA.net 君が本気で情報を得たいのであれば 今やるべきことは煽ることではない 足りない情報を出すことだ
296 :デフォルトの名無しさん :2019/09/03(火) 19:32:29.06 ID:8f2iOqT4.net わかりました
297 :デフォルトの名無しさん :2019/09/13(金) 20:17:09.23 ID:wTJZs2gr.net ## Configuration over Configuration $$ \require{TeX/extpfeil}\require{TeX/AMScd} \newcommand{\eqtag}[1]{\tag{#1}\label{#1}} \newcommand{\isa}[1]{\mathinner{\left[\!\left[{#1}\right]\!\right]}} \DeclareMathOperator{\bbR}{\mathbb{R}} \DeclareMathOperator{\ecdf}{\mathtt{ecdf}} \DeclareMathOperator{\ebdf}{\mathtt{ebdf}} \DeclareMathOperator{\relu}{\mathtt{relu}} \DeclareMathOperator{\lure}{\mathtt{lure}} $$ ``` {r} big_data = list ( size = length , add = rlist::list.append , test = testthat::test_that , lty_none = 0 , lty_line = 1 , lty_dash = 2 , lty_dot = 3); prelu = function (...) pmax (..., 0); plure = function (...) pmin (..., 0); ``` 続く
298 :デフォルトの名無しさん :2019/09/13(金) 20:17:51.16 ID:wTJZs2gr.net ## Convex on Rails 多分、[村人の定理](https://en.wikipedia.org/wiki/Mathematical_folklore) 同値な関数達 ``` {r} ebdf_0 = function (xi) { n = length (xi); qi = cumsum (sort (xi)); function (x) { purrr::reduce (.init = 0, .x = 1 : n, .f = function (out, j) { pmax (out, j * x - qi [j]); }) / n; }; }; ebdf_1 = function (xi) { n = length (xi); function (x) { purrr::reduce (.init = 0, .x = xi, .f = function (out, xi) { out + prelu (x - xi); }) / n; }; }; ebdf_huge = function (xi) { n = length (xi); function (x) { purrr::reduce (.init = 0, .x = 1 : n, .f = function (out, j) { purrr::reduce (.init = out, .x = combn (1 : n, j, simplify = F), function (out, js) { pmax (out, j * x - sum (xi [js])); }); }) / n; }; }; ebdf_2 = function (xi) { n = length (xi); xi = sort (xi); qi = cumsum (xi); function (x) { purrr::reduce (.init = n * x - qi [n], .x = n : 1, .f = function (out, j) { out - plure ((out + qi [j]) / j - xi [j]); }) / n; }; }; dog_data = with (big_data, { equal = testthat::expect_equal; xi = c (- 1, 0, 2, 3); test ('ebdf', { doit = function (xi) { bdf_0 = ebdf_0 (xi); bdf_1 = ebdf_1 (xi); bdf_2 = ebdf_2 (xi); bdf_huge = ebdf_huge (xi); x = seq (min (xi) - 1, max (xi) + 1, len = 1e+3); equal (bdf_0 (x), bdf_1 (x)); equal (bdf_0 (x), bdf_2 (x)); if (size (xi) < 5) { equal (bdf_0 (x), bdf_huge (x)); } }; doit (xi); n = 10; doit (c (rnorm (n, - 1, 1), rnorm (n, 1, 2))); }); add (big_data, xi = xi, equal = equal); }); ``` 続く
299 :デフォルトの名無しさん :2019/09/13(金) 20:18:38.86 ID:wTJZs2gr.net Rの関数`ecdf`は次のように定義されている。 $$ \begin{split} \ecdf(x) &:= \ecdf_\xi(x) := \frac{1}{n} \sum_{j=1}^n \isa{x \ge \xi_j}, \\ \isa{\operatorname{expr}} &:= \begin{cases} 1, & \text{ iff } \operatorname{expr} = \mathtt{true}, \\ 0, & \text{ otherwise}. \end{cases} \end{split} \eqtag{eq:ecdf} $$ ここで、$\xi_1<\cdots<\xi_n\in\bbR$を観測された値とする。 これを次のように積分したものを$\ebdf$と書くことにする。 $$ \ebdf(x) := \ebdf_\xi(x) := \int_{y=-\infty}^x \ecdf(x) = \frac{1}{n} \sum_{j=1}^n \relu(x - \xi_j). \eqtag{eq:ebdf} $$ `ebdf_1`はこの式を、`ebdf_0, ebdf_huge, ebdf_2`は式変形したものを実装している。 ``` {r} with (dog_data, { plot (ecdf (xi)); x = seq (min (xi) - 1, max (xi) + 1, len = 1e+3); bdf = ebdf_2 (xi); plot (x, bdf (x), type = 'l', main = 'ebdf'); points (xi, bdf (xi)); lines (x, prelu (x - mean (xi)), lty = lty_dash); }); ``` コードを見ると、`ebdf_2`は、 [ReLU](https://en.wikipedia.org/wiki/Rectifier_(neural_networks)) を [活性化関数](https://en.wikipedia.org/wiki/Activation_function) とする [ResNet](https://en.wikipedia.org/wiki/Residual_neural_network) に なっていることがわかる。さらに、`ebdf_2`を微分すると、ReLUとシグモイドが 混在したResNetになる。 ``` {r} ecdf_2 = function (xi) { n = length (xi); xi = sort (xi); qi = cumsum (xi); function (x) { purrr::reduce (.init = cbind (n * x - qi [n], n), .x = n : 1, .f = function (out, j) { f = out [, 1]; d_f = out [, 2]; g = (f + qi [j]) / j - xi [j]; cbind (f - plure (g), d_f - (g < 0)); }) / n; }; }; ``` 続く
300 :デフォルトの名無しさん :2019/09/13(金) 20:19:21.78 ID:wTJZs2gr.net ``` {r} with (dog_data, { test ('resnet-cdf', { doit = function (xi) { cdf = ecdf (xi); cdf_2 = ecdf_2 (xi); x = seq (min (xi) - 1, max (xi) + 1, len = 1e+3); equal (cdf (x), cdf_2 (x) [, 2]); }; doit (xi); n = 10; doit (c (rnorm (n, - 1, 1), rnorm (n, 1, 2))); }); }); ``` 何が嬉しいのかはさておき、$\eqref{eq:ecdf}$がResNetで書けたことになる。 おしまい
301 :デフォルトの名無しさん :2019/09/21(土) 00:43:04.47 ID:MLPk5U2Q.net ## Zigzag on Rails [ブログ](http://blog.mirkoklukas.com/finite-sample-expressivity/) の内容を 実装してみる。 ``` {r} zigzag_on_rails = function (xi, yi) { js = order (xi); xi = xi [js]; yi = yi [js]; y0 = yi [1]; ai = diff (c (0, diff (yi) / diff (xi), 0)); f = function (x) { purrr::reduce (.init = y0, .x = seq_along (xi), .f = function (out, j) { out + ai [j] * prelu (x - xi [j]); }); }; big_data $ add (big_data, xi = xi, yi = yi, y0 = y0, ai = ai, zigzag = f); }; dog_data = with (dog_data, { yi = c (2, 0, - 1, 1); rails = zigzag_on_rails (xi, yi); x = seq (min (xi) - 1, max (xi) + 1, len = 1e+3); plot (x, rails $ zigzag (x), type = 'l'); points (xi, yi); add (dog_data, yi = yi); }); ``` 観測値からの外延の仕方がブログとは異なると思うが、こんな感じじゃないかと 思う。[区分線形関数](https://en.wikipedia.org/wiki/Piecewise_linear_function) を式にすると、自然とReLUの和が現れる。折れ線の変化`ai`を正と負の成分に 分けると、それぞれが凸 on Railsに乗る。 続く
302 :デフォルトの名無しさん :2019/09/21(土) 00:44:03.23 ID:MLPk5U2Q.net ``` {r} convex_on_rails = function (xi, ai) { js = order (xi); xi = xi [js]; ai = ai [js]; bi = cumsum (ai); ci = cumsum (ai * xi); f = function (j, x) bi [j] * x - ci [j]; d_f = function (j, x) ai [j] * (x - xi [j]); i_f = function (j, x) (x + ci [j]) / bi [j]; convex = function (x) { js = seq_along (xi); purrr::reduce (.init = 0, .x = js, .f = function (out, j) { pmax (out, f (j, x)); }); }; resnet = function (x) { js = rev (seq_along (xi)); purrr::reduce (.init = f (js [1], x), .x = js, .f = function (out, j) { out - plure (d_f (j, i_f (j, out))); }); }; list (convex = convex, resnet = resnet); }; resnet_on_rails = function (xi, yi) { out = zigzag_on_rails (xi, yi); with (out, { xi = out $ xi; ai = out $ ai; js = which (ai > 0); fp = convex_on_rails (xi [js], ai [js]); js = which (ai < 0); fm = convex_on_rails (xi [js], - ai [js]); convex = function (x) y0 + fp $ convex (x) - fm $ convex (x); resnet = function (x) y0 + fp $ resnet (x) - fm $ resnet (x); add (out, convex = convex, resnet = resnet); }); }; ``` 続く
303 :デフォルトの名無しさん :2019/09/21(土) 00:44:40.99 ID:MLPk5U2Q.net ``` {r} with (dog_data, { rails = resnet_on_rails (xi, yi); x = seq (min (xi) - 1, max (xi) + 1, len = 1e+3); plot (x, rails $ resnet (x), type = 'l'); points (xi, yi); doit = function (xi, yi) { rails = resnet_on_rails (xi, yi); x = seq (min (xi) - 1, max (xi) + 1, len = 1e+3); equal (rails $ zigzag (xi), rails $ convex (xi)); equal (rails $ zigzag (xi), rails $ resnet (xi)); }; doit (xi, yi); n = 10; doit (c (rnorm (n, 0, 1), rnorm (n, 2, 3)), c (rnorm (n, 0, 2), rnorm (n, 0, 1))); }); ``` 区分線形関数は二本のResNet with ReLUの [アフィン写像](https://en.wikipedia.org/wiki/Affine_transformation) で 書けたことになる。 おしまい
304 :デフォルトの名無しさん :2019/09/21(土) 00:50:33.16 ID:MLPk5U2Q.net と思ったけどバグを見つけた 誤: equal (rails $ zigzag (xi), rails $ convex (xi)); equal (rails $ zigzag (xi), rails $ resnet (xi)); 正: equal (rails $ zigzag (x), rails $ convex (x)); equal (rails $ zigzag (x), rails $ resnet (x));
305 :デフォルトの名無しさん :2019/09/29(日) 13:30:24.02 ID:ufFnckbW.net スクリプトの質問してもいいですか?
306 :デフォルトの名無しさん :2019/10/05(土) 00:13:35.53 ID:Ypn3FGTV.net いいと思う だけどここは過疎を通り越して廃墟なので返事は期待できないと思うよ
307 :デフォルトの名無しさん :2019/10/05(土) 00:54:38.98 ID:79plKGk/.net r-eakalangへ行くのがよろしいかと
308 :デフォルトの名無しさん :2019/10/05(土) 00:55:04.71 ID:79plKGk/.net r-wakalangでした
309 :デフォルトの名無しさん :2019/10/05(土) 09:12:52.51 ID:Vd1h59e+.net マルチで質問すればいいよ
310 :デフォルトの名無しさん :2019/10/05(土) 10:20:23.41 ID:g+cVNt8G.net >>306 タイムスタンプ >>1 が20年くらい前かと思ったが 意外と新しくて驚いた
311 :デフォルトの名無しさん :2019/10/19(土) 23:50:11.63 ID:V1NSQDNE.net 素晴らしい [dataAnim](https://github.com/chrk623/dataAnim) ``` {r} with (list (), { no_thanks = function (...) data.frame (..., stringsAsFactors = F); j = 1 : 3; a = no_thanks (name = LETTERS [j], a = j, b = letters [j]); j = j + 1; b = no_thanks (name = LETTERS [j], a = j, c = letters [j]); dataAnim::join_anim (join_type = "left", speed = 1 , x = a, y = b, by = 'name', show_msg = T); }); ```
312 :デフォルトの名無しさん :2019/11/01(金) 23:50:53.61 ID:JL+xq15p.net [JavaScript const in R](https://colinfay.me/js-const-r/) やってみる ``` {js} $ (window).on ('load', function () { const out = new Map (); out.hello = 'world'; $ ('#const-here').html (JSON.stringify (out)); }); ``` <pre id='const-here'></pre> ``` {r} with (list (), { your_name = function (x) deparse (substitute (x)); out = new.env (); lockBinding (your_name (out), environment ()); tryCatch ({ out $ hello = 'world'; }, error = function (ex) { assign ('hello', toString (ex), env = out); }); jsonlite::toJSON (as.list (out), auto = T); }); ``` ``` {Rcpp} #include <Rcpp.h> // [[Rcpp::export]] void kossori (Rcpp::List out, Rcpp::String key, Rcpp::RObject val) { out [key] = val; } ``` ``` {r} with (list (), { your_name = function (x) deparse (substitute (x)); out = list (hello = ''); lockBinding (your_name (out), environment ()); tryCatch ({ out $ hello = 'world'; }, error = function (ex) { kossori (out, 'hello', toString (ex)); }); jsonlite::toJSON (out, auto = T); }); ``` 仕様上は、`env`に対する`$`でのセッターは、たとえ`lockBinding`が 施されていても無問題と思うが、実際は、弾くようにしている。 何か理由があるのかな?
313 :デフォルトの名無しさん :2019/11/08(金) 05:13:38.65 ID:u/zQOw3q.net >>308 Slackのこと?
314 :デフォルトの名無しさん :2019/11/09(土) 01:49:31.14 ID:ElXn62V9.net [ブログ](https://colinfay.me/js-const-r/) の [続き](https://twitter.com/_ColinFay/status/1176425719653642242) 必要があれば[R Online](https://srv.colinfay.me/r-online) で試せる ストーカーの有無によっても変わる ``` {r} with (list (), { a <- list (x = 1); lockBinding ('a', environment ()); tryCatch (a $ x <- 999, error = print); a; }); with (list (), { a <- list (x = 1); lockBinding ('a', environment ()); stalker <- a; tryCatch (a $ x <- 999, error = print); a; }); ``` (deleted an unsolicited ad)
315 :デフォルトの名無しさん :2019/11/17(日) 16:00:34.19 ID:SBcPPDjQ.net Rでリストをつくってデータフレームを組むと X <- c(A, B, C) Y <- c(1, 2, 3) df <- data.Frame(X, Y) df A 1 B 2 C 3 って出てくると思ったら ABC123 って出てきます。これはどうしたらいいのでしょうか?
316 :デフォルトの名無しさん :2019/11/17(日) 20:19:12.60 ID:2+DKcb6J.net これで、ちゃんとデータフレームになるけど? X <- c("A", "B", "C") Y <- c(1, 2, 3) df <- data.frame(X, Y) df X Y 1 A 1 2 B 2 3 C 3
317 :デフォルトの名無しさん :2019/11/23(土) 18:54:17.63 ID:uVrSZXJh.net [mathjax-node-page](https://github.com/pkra/mathjax-node-page) を使って`knitr`が作ったMathJaxの数式をsvgに変換する 工具ディレクトリ`$(tool)`に`mathjax-node-page`をインストールする ~~~ {.bash} cd $(tool) npm install mathjax-node-page ~~~ ディレクトリ`$(tool)/node_modules/`ができる ファイル`$(tool)/page.js`を作る ~~~ {.js} const fs = require ('fs'); const path = require ('path'); const mathjax = require ('mathjax-node-page'); const argv = process.argv; const usage = () => { return ['[usage]', path.basename (argv [0]), path.basename (argv [1]), '<input-html-file>'].join (' '); }; if (argv.length !== 3) { console.log (usage ()); process.exit (1); }; const encoding = {encoding: 'utf-8'}; const inn_file = argv [2]; const inn = fs.readFileSync (inn_file, encoding); mathjax.mjpage (inn, {format: ['TeX']}, {svg: true}, (out) => { process.stdout.write (out); }); ~~~ よっこらしょ ~~~ {.bash} nodejs $(tool)/page.js R/a.html > html/a.html ~~~ オフラインでも読めるようになる もっと賢い方法があるかも
318 :デフォルトの名無しさん :2019/11/23(土) 21:12:46.09 ID:fygFNKSM.net Electron = Chromium(ブラウザ) + Node.js(サーバー・ローカルPC にアクセス) + V8(JavaScript エンジン)
319 :デフォルトの名無しさん :2019/11/30(土) 22:37:46.15 ID:IwhEZ0QX.net Electronが想像どおりのものだとすると アプリケーションを作る際には良い選択肢の一つだと思う ただ上でやろうとしていることに対しては真逆な方向に進んでしまうと思う HTMLをオフラインで読めるようにするにはRmdのYAMLを設定すれば良い [HTML document](https://bookdown.org/yihui/rmarkdown/html-document.html) ~~~ {.yaml} output: html_document: mathjax: local self_contained: false ~~~ この方法で作ったHTMLをディレクトリごと配布すれば問題ない しかし完結した一枚のHTMLにまとめられればそれに越したことはない このちっさい野望を叶えるために Pandocは`self-contained`というオプションを用意している この行く手を拒むのがMathJaxになっている この話題は誰も興味がないと思うのでもう少し続ける
320 :デフォルトの名無しさん :2019/11/30(土) 22:40:42.19 ID:IwhEZ0QX.net Pandocのフィルターを使う手もある [mathjax-pandoc-filter](https://github.com/lierdakil/mathjax-pandoc-filter) ~~~ {.yaml} output: html_document: pandoc_args: [--filter, $(tool)/node_modules/.bin/mathjax-pandoc-filter] ~~~ フィルターが確実に動作する限りはベストだと思う 多分`mathjax-node-page`より実行速度が早い 多分ブラウザ内でMathJaxを動作させるより実行速度が早い ただしフィルターにバグがあってPandocが解釈できないjsonを返すと HTMLが出力されない ちなみに最近のPandocではipynbも出力できる 次のように書いておけばipynbのコードブロックに変換してくれる ~~~ code (lambda who: print ('hello ' + who)) ('Jupyter'); ~~~ 逆にipynbをマークダウンに変換もしてくれる 使い方はいろいろだと思う おしまい
321 :デフォルトの名無しさん :2019/12/25(水) 19:59:31.70 ID:iqbdwPlo.net 整然データって実験条件とかはどのように格納するべきですか? 1. 実験条件ファイル expDescr101.csv 氏名 性別 年齢 室温 モニタ解像度 問題数 問題パターン ・・・ TaroSat M 32 32 1920 29 A ・・・ 2. 実験データファイル 時刻 反応A 反応B 1011 1 0 1020 0 1 1100 0 0 以下続く 1の実験条件ファイルの条件が50個ぐらいあり、横にすごく長くなってしまうんですが、 1のファイル形式としてはこれで適切なのでしょうか?
322 :デフォルトの名無しさん :2019/12/25(水) 22:05:09.08 ID:/tjuWJuH.net それだけじゃなんとも言えんが、ぱっと見て条件データと実験データってどうやって紐付けんの?とは思った。
323 :デフォルトの名無しさん :2019/12/25(水) 22:15:54.96 ID:iqbdwPlo.net >>322 1. 〇〇Descr.csv 2. 〇〇Data.csv というファイル名にしてファイル名で紐付けしようと思ってました。 Rだと1,2は同一ファイルに記載するものなのでしょうか?
324 :デフォルトの名無しさん :2019/12/25(水) 23:26:47.21 ID:vaO1Tiyl.net エクセルとかなら横の数気にするけど、 Rになるとどうでもいい感じw
325 :デフォルトの名無しさん :2019/12/25(水) 23:31:05.68 ID:gcmB0vLr.net >>323 後からどうとでもなるけど、同一の方が楽だろうね。
326 :デフォルトの名無しさん :2020/03/30(月) 22:33:20 ID:/oBV1AS/.net 検査者間信頼性としてICCを求めたいのですが、 ICC(1,1) (1,k)〜(3,k)まで6この下位モデルすべて求められる一般的なパッケージってありませんか? 調べたところ改変Rコマンダーってのがあるんですけど、 これって論文とかに使って問題ないでしょうか?
327 :デフォルトの名無しさん :2020/04/01(水) 00:16:57.07 ID:qb0exDMg.net グリーンベレーだと? オレはコマンドーだ
328 :デフォルトの名無しさん :2020/05/19(火) 16:12:47.69 ID:aQX1psnIp うちの動画編集マンが月収600万円稼いでる件についてhttps://www.youtube.com/watch?v=yVlxnDp41zE&t=241s コスパ最強の副業「動画編集」で稼ぐ方法【生ハム登場】https://www.youtube.com/watch?v=0ogHVUKoa8k&t=53s 【最強の副業】動画編集で稼ぎ続ける人の条件【未来予想】https://www.youtube.com/watch?v=e-IA4ePHzOs 動画編集で稼ぐための手順を解説しますhttps://www.youtube.com/watch?v=zRBS17oHL5s 【副業】動画編集で「月50万くらい」を稼ぐ方法【インタビューした】https://www.youtube.com/watch?v=XqTLyUubIyI&t=208s MVクリエイターの時給は動画編集者の〇倍!?【インタビュー】https://www.youtube.com/watch?v=aaP0Q6wDO0Q 脱サラ後、二か月目で月80万円稼ぐ動画編集マンhttps://www.youtube.com/watch?v=ZpfAIvz2WSY&t=68s
329 :デフォルトの名無しさん :2020/06/01(月) 08:52:13.43 ID:jwD9tPwu.net ubuntu20.04のxfce環境だとRstudioのプルダウンメニューがマウスで開けない・・・・・ 仕方ないからキーボードでやってるけど同様の症状の人いる?
330 :デフォルトの名無しさん :2020/07/21(火) 10:53:07.89 ID:RXJ1oECH.net Windowsだとファイル名のパスが通らないライブラリが多くて困る
331 :デフォルトの名無しさん :2020/10/01(木) 16:37:41.79 ID:aJIEZDxo.net R OPEN 4.0.2が来てる
332 :デフォルトの名無しさん :2020/11/25(水) 16:21:59.80 ID:ZKrYNm0x.net collapseとかいうライブラリーすごく速くていいな
333 :デフォルトの名無しさん :2020/11/26(木) 02:20:14.29 ID:jceh/oi6.net 崩壊しそう
334 :デフォルトの名無しさん :2020/11/29(日) 22:33:58.23 ID:yN2qz+NE.net 良さそだね ただ、ライブラリ名は検索する時につらいかも https://html.duckduckgo.com/html?q=!sor collapse
335 :デフォルトの名無しさん :2020/11/30(月) 20:14:43.13 ID:3JTTeG8Mz 未経験から半年でフリーエンジニアになれる人の特徴https://www.youtube.com/watch?v=YCxu0jn52Qw フリーランスか会社員かどっちが簡単かについての最終回答https://www.youtube.com/watch?v=JA4JNSmIdxI 【エンジニア】正社員/派遣社員/フリーランスのメリット・デメリットについてhttps://www.youtube.com/watch?v=fTG-eMpwhCg 月収1000万円オンラインサロンオーナーの日常【飲み過ぎ】https://www.youtube.com/watch?v=lPfWZLatYus&t=107s 借金400万円から人生逆転するまでの軌跡https://www.youtube.com/watch?v=fXdHlFFUjGY エンジニアはお金を追求してはいけないという年寄りを論破してみたhttps://www.youtube.com/watch?v=qJHCmxFv718 プログラミングスクールを否定する老害どもについてhttps://www.youtube.com/watch?v=K2SN-Rr0PgY&t=506s 新人叩きしてる古参勢がすぐ儲からなくなる理由https://www.youtube.com/watch?v=Ch9Ir8O-iqU&t=332s
336 :デフォルトの名無しさん :2020/12/08(火) 22:26:28.66 ID:UWuPPeJ6.net 以前書いたプルルのパイプのバグ(?)はフィックスしている。 [Tidyverse](https://www.tidyverse.org/blog/2020/11/magrittr-2-0-is-here/) いつフィックしたのかはわからないが、magrittrを2.0にアップデートしたら 動くようになっていた。次の記事を見て、新しく導入されるっぽい関数宣言の 短縮形を試していた際に気がついた。 [R adds native pipe and lambda syntax](https://news.ycombinator.com/item?id=25316608) Rockerさまさま。というわけでJSネタ。 [A Modern JavaScript Tutorial](https://news.ycombinator.com/item?id=25333350) JSのプロミス(Rのプロミスとは別)を勉強した時に、素人目線の注意書きが ところどころにあって、とても助かった記憶がある。皆さんを心地よい睡眠へ 誘う渾身のプレゼン資料を作る時に役立つかもしれない。
337 :デフォルトの名無しさん :2020/12/20(日) 21:51:34.41 ID:g6t9QFcJ5 【UUUM鎌田和樹×note加藤貞顕対談】クリエイターが創作に集中できるよう、僕らがやっていることhttps://www.businessinsider.jp/post-215818 YouTuber事務所UUUMが「note」に出資した理由。トップ対談で語られた“共感提携”の意図https://www.businessinsider.jp/post-194969 NexToneとUUUMとの業務提携に関するお知らせ 音楽カバー動画におけるクリエイター収益向上へhttps://prtimes.jp/main/html/rd/p/000000042.000017470.html UUUM代表取締役・鎌田和樹氏が語る、ゴルフ事業立ち上げの理由 「僕らだからこそリーチできる人たちがいる」https://realsound.jp/tech/2019/02/post-325000.html LINEとUUUM、包括的クリエイターパートナー契約を締結 UUUMクリエイターがLINEでの活動を本格始動https://www.jiji.com/jc/article?k=000002462.000001594&g=prt HIKAKINが所属するYouTuberプロダクション・UUUMがゲームを作った理由とは? 鎌田和樹社長インタビューhttps://www.famitsu.com/news/201509/16087857.html
338 :デフォルトの名無しさん :2021/01/23(土) 18:19:52.83 ID:ibK8bFkF.net [[r-hub/r-minimal: Minimal Docker images for R](https://github.com/r-hub/r-minimal) `rocker`のイメージとサイズを比べてみる。 ~~~ {.bash} REPOSITORY TAG SIZE rhub/r-minimal devel 35.3MB rocker/r-ver devel 813MB rocker/tidyverse devel 2.31GB ~~~ `rhub/r-minimal`にRのライブラリをインストールしようとすると、 `gcc`などのシステムのライブラリが必要になる。それを調べて インストールする手間を考えると、初めから全込みのイメージを ダウンロードした方が手っ取り早いかもしれない。それでも、 `r-minimal`から始めたくなる場面がしばしばあると思う。特に、 初めてDockerを使う場合は、まずは、`r-minimal`で試してみる価値が あると思う。金は時なり。
339 :デフォルトの名無しさん :2021/03/07(日) 00:01:20.86 ID:9nPgQwYX.net マイクロソフトがMicrosoft365Rというパッケージを公開してる 365(Office365)をRから操作できるらしい
340 :デフォルトの名無しさん :2021/03/11(木) 05:52:16.51 ID:QXrD3sSh.net rvestのバージョンがついに1.0.0になったみたいよ 追加されたhtml_text2()はどんななんだろ
341 :デフォルトの名無しさん :2021/03/12(金) 21:46:02.66 ID:0yPjEku4.net タイトル勝ちと思ったけど... [The Hintons in your Neural Network](https://www.reddit.com/r/MachineLearning/comments/m2qo5p) 物理では粒子をトン付で呼ぶ習慣がある。エレクトロン、フォトン、等。 で、[ヒントン](https://en.wikipedia.org/wiki/Geoffrey_Hinton) redditではこの渾身のオヤジギャグが通じていないっぽい。
342 :デフォルトの名無しさん :2021/03/13(土) 15:48:43.66 ID:DSayhBR4.net 物理の人って〇〇効果って言葉も好きだよね。
343 :デフォルトの名無しさん :2021/03/13(土) 22:20:23.19 ID:7PLWsAxv.net 気になって調べてみた。 [List of effects](https://en.wikipedia.org/wiki/List_of_effects) 分野別に見ると、物理が最も多いかもね。 ただし、数年のライフタイムまで含めると、物理以外が多くなる気がする。 * [ストライサンド効果](https://en.wikipedia.org/wiki/Streisand_effect) * [シャンシャン効果](https://www.youtube.com/watch?v=_mNwkyxtHiw) * [藤井効果](https://www.nikkei.com/article/DGXMZO24677330V11C17A2000000/) * [シブコ効果](https://sportiva.shueisha.co.jp/clm/golf/golf/2019/09/01/post_5/) * [グーグル効果](https://en.wikipedia.org/wiki/Google_effect) * [ブルウィップ効果](https://en.wikipedia.org/wiki/Bullwhip_effect) * [レゲエ効果](https://www.youtube.com/watch?v=TtKTW0HCBRA) * 安藤もあ いろんな人が〇〇効果って言葉が好きな気がする。 一般に、少数の特徴量が掴めたときに限り、〇〇効果という言葉が使われる ように見える。だとすると、〇〇効果という言葉が使える状況は幸せなこと だと思う。
344 :デフォルトの名無しさん :2021/03/13(土) 22:40:45.53 ID:BHUVv8XX.net Effective Java 第3版とかか。
345 :デフォルトの名無しさん :2021/03/13(土) 23:24:01.37 ID:WRMq8U61.net 物理現象だと因果がはっきりしてるから○○エフェクトってなりやすいんだろうね 心理の場合でもプラシーボ効果やカリギュラ効果みたいに因果が明確なものは○○効果だね
346 :デフォルトの名無しさん :2021/03/14(日) 11:25:25.93 ID:gX9wxVrX.net バタフライ効果はバタフライエフェクトと言われがちなのはなんなのだろう
347 :デフォルトの名無しさん :2021/03/14(日) 17:18:34.03 ID:/reDmCHL.net 多分バタフライエフェクトって有名な映画の影響
348 :デフォルトの名無しさん :2021/03/16(火) 19:04:00.31 ID:b0P2Xnea.net RStudioで普通に日本語入力できるようになってるんだね 以前は変換確定するまで数文字しか表示されなかったのに
349 :デフォルトの名無しさん :2021/04/03(土) 13:40:09.03 ID:J5cKOXYD.net 下表のようにある職種米にあqるskillに対する得点を計測し平均値を表にしました。 この得点からスキルをABCの3つにクラスタリングしています。 医師 看護 介護 クラスタ skill1 0.8 0.4 0.2 A skill2 0.3 0.5 0.1 B skill3 0.2 0.3 03 C skill4 0.1 0.3 03 C ・・・ skill15 0.1 0.2 0.8 B で、クラスタAに対する医師・看護・介護の得点をボックスプロットしたいのですが、 なにかいい方法ありませんでしょうか?
350 :デフォルトの名無しさん :2021/04/03(土) 13:41:25.14 ID:J5cKOXYD.net 下表のようにある職種米にあqるskillに対する得点を計測し平均値を表にしました。 この得点からスキルをABCの3つにクラスタリングしています。 医師 看護 介護 クラスタ skill1 0.8 0.4 0.2 A skill2 0.3 0.5 0.1 B skill3 0.2 0.3 03 C skill4 0.1 0.3 03 C ・・・ skill15 0.1 0.2 0.8 B で、クラスタAに対する医師・看護・介護の得点をボックスプロットしたいのですが、 なにかいい方法ありませんでしょうか?
351 :デフォルトの名無しさん :2021/04/03(土) 13:41:46.87 ID:J5cKOXYD.net 表ズレ訂正しました
352 :デフォルトの名無しさん :2021/04/03(土) 20:04:53.80 ID:M3UwNQqU.net 宿題かなんか? 医師・看護・介護が水準になるtidy data形式にしてから描けばいいんじゃ?
353 :デフォルトの名無しさん :2021/04/03(土) 23:54:26.19 ID:LokMTfAJ.net >>350 tidyverseは使えますか? データフレーム名をdfとすれば大枠は以下でいけますよ library(tidyverse) df %>% filter(クラスタ == "A") %>% pivot_longer(-クラスタ) %>% ggplot(aes(name, value)) + geom_boxplot()
354 :デフォルトの名無しさん :2021/04/04(日) 06:55:51.01 ID:CeSVCjFt.net 上の回答が答えになっていると思う。以下はおまけ。 ``` {r nasdaq} df = " CEO, COO, CTO, cluster 0.8, 0.4, 0.2, A 0.3, 0.5, 0.1, B 0.2, 0.3, 03, C 0.1, 0.3, 03, C 0.1, 0.2, 0.8, B "; df = read.csv (text = df, colClasses = c ("numeric", "numeric", "numeric", "character"), strip.white = T); print (df); ``` tidy無し版 ``` {r plain, dependson = 'nasdaq'} for (clazz in unique (df $ cluster)) { go = subset (df, cluster == clazz, select = - cluster); print (go); boxplot (go, xlab = 'role', ylab = 'skill', main = sprintf ('cluster = %s', clazz)); } ``` 続く
355 :デフォルトの名無しさん :2021/04/04(日) 06:56:59.64 ID:CeSVCjFt.net パイプ無し版 ``` {r tidy, dependson = 'nasdaq'} for_plot = tidyr::pivot_longer (df, - cluster, names_to = "role", values_to = "skill"); print (for_plot); for (clazz in unique (for_plot $ cluster)) { go = dplyr::filter (for_plot, cluster == clazz); print (go); . = ggplot2::ggplot (go); . = . + ggplot2::aes (x = role, y = skill); . = . + ggplot2::geom_boxplot (); . = . + ggplot2::labs ( title = sprintf ('cluster = %s', clazz) ); print (.); } ``` プロットを並べる。 ``` {r arrange_plot, dependson = 'tidy', fig.width = 4 * 2, fig.height = 4} . = ggplot2::ggplot (for_plot); . = . + ggplot2::aes (x = role, y = skill); . = . + ggplot2::geom_boxplot (); . = . + ggplot2::facet_wrap (~ cluster); print (.); ``` 箱を並べる。 ``` {r arrange_box, dependson = 'tidy', fig.width = 4 * 2, fig.height = 4} . = ggplot2::ggplot (for_plot); . = . + ggplot2::aes (x = role, y = skill, fill = cluster); . = . + ggplot2::geom_boxplot (); print (.); ``` おしまい
356 :デフォルトの名無しさん :2021/04/04(日) 21:35:04.47 ID:wb8oJNIe.net 色々とご親切にありがとうございます 自分のつたいないコードよりスッキリ問題解決しました m(_ _)m
357 :デフォルトの名無しさん :2021/04/05(月) 22:30:05.95 ID:I+S1foEa.net 白状すると、検索してコピペして動いたコードを貼っただけ。 `boxplot`自体使ったことがなかった。
358 :デフォルトの名無しさん :2021/04/05(月) 23:42:08.67 ID:rQp9M9u0.net 箱ひげ図は義務教育で教えるようになってからじわじわ市民権を得つつある感じ 10年前はほとんど誰も知らなくて見せてもなんだコレだったけど
359 :デフォルトの名無しさん :2021/04/06(火) 00:00:45.57 ID:Phuen/Ay.net ですよねー 株式のロウソクは知ってたけどw
360 :デフォルトの名無しさん :2021/04/07(水) 13:13:10.36 ID:FafhCuwR.net 箱ひげ図はいつのまにかエクセルにも搭載されてるね
361 :デフォルトの名無しさん :2021/04/11(日) 23:30:00.60 ID:WOn1pmZ/.net 箱ひげ危機一髪!
362 :デフォルトの名無しさん :2021/04/12(月) 12:23:35.50 ID:e0XaXu1M.net また髪の話してる・・・
363 :デフォルトの名無しさん :2021/05/05(水) 21:34:32.08 ID:UPU4dvJy.net RでJIS丸めじゃない四捨五入ってどうやればいいの? round(0.285,2)が0.28じゃなく0.29になるような
364 :デフォルトの名無しさん :2021/05/06(木) 00:06:44.67 ID:mKuB7+h0.net 恐らくコード組むしかないかと
365 :デフォルトの名無しさん :2021/05/06(木) 02:20:37.06 ID:RsFfHoAZ.net 書き方はぐぐればすぐ見つかるみたいよ。
366 :デフォルトの名無しさん :2021/05/06(木) 13:42:22.67 ID:xWg3mBRt.net 検索して出てきたコードをいくつか試したけど2進数のせいか どれもround2(0.285,2)が0.28になってしまう このぐらいの桁数の丸めは需要ないのかな
367 :デフォルトの名無しさん :2021/05/06(木) 14:35:10.89 ID:5/trkii1.net ググって出てきた最初のコード試して見たけどJIS丸めと同じ結果だね。
368 :デフォルトの名無しさん :2021/05/07(金) 12:10:57.72 ID:lSMR/7Wh.net 結局きちんと動作するコードは見つからなかったよ 少し驚いたな 四捨五入は簡単なようでいて落とし穴のある難問なのかもね
369 :デフォルトの名無しさん :2021/05/07(金) 19:03:46.29 ID:zvlymYIK.net そうなのかw 驚いた。
370 :デフォルトの名無しさん :2021/05/09(日) 03:07:28.88 ID:EJ+wP34G.net 0.285 には以下の通り2進数に起因する誤差があるから、 内部的には 0.284999..... 扱いなんだろうね > 29 - (0.285*100 + 0.5) [1] 3.552714e-15
371 :デフォルトの名無しさん :2021/05/09(日) 09:52:41.68 ID:SqRAraa2.net 確認には直接フォーマット系の関数を使った方が簡単だと思う。 ``` {r} sprintf ('%.64f', 0.15); ``` 多くの四捨五入の実装は`10`を掛ける演算を使っているが、注意が必要になる。 C99の標準関数を使えば、`round (x, digit = 0)`に相当する四捨五入は得られる。 ``` {Rcpp} #include <Rcpp.h> #include <cmath> // [[Rcpp::plugins(cpp17)]] // [[Rcpp::export]] double std_round (double x) { return std::round (x); } ``` `std_round`を使って`round (x, digit = 1)`に相当することをやろうとして、 次のようなコードを書くと、オワコンがやって来る。 ``` {r} sprintf ('%.64f', std_round (0.15 * 10) / 10); ``` 数値計算と表示との整合性がとれていないにも関わらず、通常のプリント文を 見ている限り気が付きにくい厄介なバグになる。敗因は次の計算にある。 ``` {r} sprintf ('%.64f', 0.15 * 10); ``` 四捨五入のスマートな実装方法は思いつかない
372 :デフォルトの名無しさん :2021/05/09(日) 13:08:43.31 ID:WMytKT+1.net >>366 >>368 内部レジスタの値は正しく丸められてても 表示でこけてるだけって可能性もあるからな 疑うのは大事だけど 自分が勘違いしてないことを確認することも大事
373 :デフォルトの名無しさん :2021/05/09(日) 15:07:00.86 ID:YBysisGe.net >>372 デフォルト環境で0.29が0.28と表示されるわけないわ
374 :デフォルトの名無しさん :2021/05/09(日) 17:31:33.95 ID:EJ+wP34G.net 以下のページでRの丸めについて英語で説明してるね ttps://cran.r-project.org/web/packages/round/vignettes/Rounding.html 最終的に多倍長演算ライブラリ gmp の使用を推奨してる library(gmp) myround <- function(x, digits){ return(as.numeric((x*10^digits+0.5)/(10^digits))) } val <- as.bigq(285, 1000) # 0.285 を 285/1000 と分数指定 myround(val, digits=2)
375 :デフォルトの名無しさん :2021/05/09(日) 23:08:26.19 ID:CguSLRqk.net そういえばPython2と3でなんかそんな問題があったような・・・ 2ではできたのに3ではできなくなったみたいな。
376 :372 :2021/05/10(月) 02:45:27.57 ID:IKdk2DQV.net >>374 myround に floor (負の扱いによっては trunc) 付け忘れてた 補完して解釈してください
377 :デフォルトの名無しさん :2021/05/10(月) 13:09:40.83 ID:29Sz1uMY.net sprintfでの確認やgmpライブラリの方法は勉強になるなあ gmpを使った四捨五入は完璧! ただbigqに変換するところの手作業が実用上のネックで、これを無くすのが難しそう
378 :デフォルトの名無しさん :2021/05/11(火) 02:38:59.50 ID:Y2pGc4AX.net 残念ながら多倍長数への変換の自動化は無理そうだ 手作業で一つひとつ変換するとなると直接手作業で四捨五入したほうがずっと早いしミスも少ない Rで実用的な四捨五入は不可能なのだろうか
379 :デフォルトの名無しさん :2021/05/11(火) 21:59:25.76 ID:YVUucC+d.net 数値が "±nn.nnn" 形式の文字列だけなら以下の関数でどうだろ ("2.85e-1" とかだと駄目だけど) library(gmp) text2bigq <- function(txt){ denominator <- 10^nchar(txt) # 10^小数点以下の桁数より大きい整数 numerator <- as.integer(round(as.numeric(txt)*denominator)) return(as.bigq(numerator, denominator)) } myround <- function(x, digits){ return(as.numeric(floor(x*10^digits+0.5)/(10^digits))) } val <- text2bigq("0.285") myround(val, digits=2)
380 :デフォルトの名無しさん :2021/05/13(木) 21:08:11.50 ID:WceB4CAD.net text2bigqなんてよく考えつくなあ これ引数のクオーテーション無くてもいけるね それなら2.85e-1でも通る ただ数値によって桁あふれのエラーが出るのが難点だね 丸め桁に対して数値の桁数が十分多いときは分岐して普通にroundすればいけるのかな?
381 :デフォルトの名無しさん :2021/05/19(水) 12:40:19.58 ID:whMp2U3/.net ついにR4.1.0来たね 目玉はネイティブパイプの実装 iris |> head()
382 :デフォルトの名無しさん :2021/05/23(日) 20:29:57.49 ID:PFrgvhmk.net 積と[作用](https://ncatlab.org/nlab/show/action) の関係 ``` {r} self = with (new.env (), { id = function (a) a; mult = function (bc) function (ab) function (a) bc (ab (a)); flip = function (abc) function (b) function (a) abc (a) (b); r_curry_fw = function (abc) function (a) function (b) abc (a, b); r_curry_bw = function (abc) function (a, b) abc (a) (b); `%>%` = r_curry_bw (flip (id)); `%*%` = r_curry_bw (flip (mult)); f = function (x) function (y) paste0 ('(', x, ', ', y, ')', sep = ''); testthat::test_that ('', { testthat::expect_equal ( 1 %>% f (2) %>% f (3) # 作用 , 1 %>% (f (2) %*% f (3)) # 積 ); }); as.list (rlang::current_env ()); }); ``` ユーザー定義の二項演算をサポートしないプログラミング言語では、 パイプは言語仕様に組み込まないと実現できないので、パイプを言語仕様に 取り入れるか否かという議論がぼちぼちある。その一方で、関数の合成については 眼中無しになっている。積を積極的にサポートするプログラミング言語が 少ないのは何故だろう? Rに限った話ではないので、何らかの人間の特性が関わっているのかもしれない。 上のコードの空白や改行も含めた全ての文字中で、約20パーセントを"function" という単語が占める。今度導入されたラムダ表記だと、バックスラッシュの 占める割合は約3パーセントにまで減る。個人的には、これが嬉しい。 パイプのオマケでの仕様変更な気がするが、塞翁が馬。
383 :デフォルトの名無しさん :2021/05/24(月) 22:54:45.02 ID:hj+NPZxB.net ネイティブパイプは実際に使ってみると思ってたよりいまいちだった うーん cars |> head() |> {\(x) lm(dist ~ speed, x)}() cars |> head() |> x => lm(dist ~ speed, x) やはりこっちが楽 cars %>% head %>% lm(dist ~ speed, .)
384 :デフォルトの名無しさん :2021/05/24(月) 23:22:48.20 ID:JMNiLVpX.net ネイティブパイプって任意の引数に値を渡せず第一引数限定なんだ。 それは昔ながらの引数が統一されていない関数だとちょっと使いにくいな。
385 :デフォルトの名無しさん :2021/05/29(土) 00:00:07.23 ID:Rm9o1hL0.net これでもできたけどやはりめんどくさい かなり見やすくはなった cars |> head() |> lm(formula = dist ~ speed)
386 :デフォルトの名無しさん :2021/06/06(日) 20:14:12.19 ID:pDnwGISN.net Rとは関係しないかもしれない: 1. [JavaScript and the next decade of data programming (2020) | Hacker News](https://news.ycombinator.com/item?id=27373388) インタラクティブな可視化 1. [Learn R Through Examples (2020) | Hacker News](https://news.ycombinator.com/item?id=27404103) 賛否両論 1. [Yann LeCun Deep Learning Course 2021 | Hacker News](https://news.ycombinator.com/item?id=27387154) ありがたや 1. [246B, Notes 3: Elliptic functions and modular forms | What's new](https://terrytao.wordpress.com/2021/02/02/246b-notes-3-elliptic-functions-and-modular-forms/) 四捨五入も"周期的"な関数`round (x + n) = round (x) + n` ``` {python round_py} import numpy; import mpmath; def round_theta (x, h = 1e-6): q = mpmath.exp (- 0.5 / h); z = lambda x: x / 2j / h; x = [mpmath.re ( mpmath.jtheta (3, z (x), q, 1) / 2j / mpmath.jtheta (3, z (x), q, 0) ) for x in x]; return numpy.array (x, dtype = numpy.float64); ```
387 :デフォルトの名無しさん :2021/06/07(月) 17:32:24.52 ID:KtrFRbYj.net インタラクティブな可視化やアニメーションのプロットをやってみたいけど印刷してハンコが前提なせいで機会がない
388 :デフォルトの名無しさん :2021/06/09(水) 21:41:53.94 ID:Swmi7m7B.net インタラクティブな可視化はどうしてもGUIとの連携が必要になるが、 アニメは連携が要らない。 ``` {r, animation.hook = "gifski"} self = with (new.env (), { plot_text = \(...) \(text) { c01 = c (0, 1); plot (c01, c01, type = 'n', axes = F, ann = F); text (mean (c01), mean (c01), text, ...); }; purrr::map (strsplit ("あいうえお", "") [[1]], plot_text (cex = 3)); plot_text (cex = 5) ("\U1F44C"); as.list (rlang::current_env ()); }); ``` `gifski`ならアニメ専用のコードを必要としない。このことは一長一短だと思うが、 手っ取り早い。
389 :デフォルトの名無しさん :2021/06/10(木) 20:44:21.69 ID:POtgR8d3.net functionふたつ繋げてmapを受けやすくしてるのか なるほどそういう方法もあるんだ
390 :デフォルトの名無しさん :2021/06/12(土) 07:55:41.53 ID:eU1Xef15.net わかっていないところなので最初に結論: * 混ぜるな危険 * 触らぬ神に祟りなし [NSE](http://adv-r.had.co.nz/Computing-on-the-language.html) を使った関数と [高階関数](https://en.wikipedia.org/wiki/Higher-order_function) を混ぜるな。 殆どの人にとって、何行でプログラムが書けるかは問題でなく、何分で結果が 得られるかが問題だと思う。見つけにくいバグを生みやすいテクは避けた方が 無難だと思う。 複数の表に対して同じ操作をするオモチャを考える。 ``` {r sub, dependson = ""} sub = with (new.env (), { r_swap = \(abc) \(b, a) abc (a, b); try_it = \(expr) tryCatch (expr, error = gettext); as.list (rlang::current_env ()); }); ``` つづく
391 :デフォルトの名無しさん :2021/06/12(土) 07:57:10.18 ID:eU1Xef15.net ``` {r map, dependson = "sub"} sub = with (sub, { `%map%` = purrr::map; f = \(abc) \(...) \(a) abc (a, ...); g = \(abc) \(b) \(a) abc (a, b); datum = list (head (cars), tail (cars)); datum %map% f (`[`) (2 : 1) |> try_it () |> print (); datum %map% g (`[`) (2 : 1) |> try_it () |> print (); datum %map% f (r_swap (lm)) (dist ~ speed) |> try_it () |> print (); datum %map% g (r_swap (lm)) (dist ~ speed) |> try_it () |> print (); datum %map% f (subset) (dist == max (dist)) |> try_it () |> print (); datum %map% g (subset) (dist == max (dist)) |> try_it () |> print (); datum %map% f (dplyr::group_by) (dist) |> try_it () |> print (); datum %map% g (dplyr::group_by) (dist) |> try_it () |> print (); datum %map% f (dplyr::mutate) (b = dist + 1) |> try_it () |> print (); datum %map% g (dplyr::mutate) (b = dist + 1) |> try_it () |> print (); as.list (rlang::current_env ()); }); ``` * `f (group_by) (dist)`と`g (group_by) (dist)`の違いは? * `lm`と他のNSEとの違いは? 個人的には、これらの疑問を明朗会計できない。 おしまい
392 :デフォルトの名無しさん :2021/06/12(土) 23:40:51.80 ID:9FSs+4P4.net グループ化はg()だけエラーになるのか 意識すらしてなかった部分だけど面白い検討結果だね つまるところtidyverseの処理はtidyverse的に書くのが短くて早くてわかりやすいってことかな
393 :デフォルトの名無しさん :2021/06/16(水) 22:11:03.04 ID:GYxdWR2c.net 4.1になってWindowsでもtidyxlでxlsxを読めるようになっていることに気付いた tidyxlはあまり使わないものの散らかったxlsx読むときには便利
394 :デフォルトの名無しさん :2021/06/16(水) 23:12:59.70 ID:l5+NWqia.net ほう。使ってみよう。
395 :デフォルトの名無しさん :2021/06/20(日) 18:54:38.51 ID:dkTIMvj9.net 前説が長いので最初に結論: >355は真似しないで欲しい。 [IHaskell](https://github.com/gibiansky/IHaskell) でコードを書く。 ``` haskell import GHC.Exts (groupWith) 分割 = groupWith length 仕事 (a : as) = (length a, length as + 1) 集計 = foldl push mempty where push out a = out ++ pure a 個々 = map 物件 = words "Lorem ipsum dolor sit amet, consectetur adipiscing elit" 比較 前処理 後処理 = lhs == rhs where lhs = 後処理 $ 集計 . 個々 仕事 . 分割 <$> 前処理 物件 rhs = 後処理 $ 集計 <$> 個々 仕事 <$> 分割 <$> 前処理 物件 -- 比較 Identity runIdentity 比較 (\a -> [a, a ++ a]) (flip (>>=) id) 比較 (\a j -> [a !! k | k <- j]) (flip id [1, 3, 5]) ``` [関手](https://en.wikipedia.org/wiki/Functor) と呼ばれるデザインパターンを 使っている。このパターンをRに翻訳する。 ``` {r self, dependson = ""} self = with (new.env (), { id = \(a) a; hom_snd = \(bc) \(ab) \(a) bc (ab (a)); flip = \(abc) \(b) \(a) abc (a) (b); const = \(a) \(b) a; r_curry_fw = \(abc) \(a) \(b) abc (a, b); r_curry_bw = \(abc) \(a, b) abc (a) (b); `%.%` = r_curry_bw (hom_snd); as.list (rlang::current_env ()); }); ``` つづく
396 :デフォルトの名無しさん :2021/06/20(日) 18:56:30.60 ID:dkTIMvj9.net 例題を次の記事から拝借する。[fmap]{#fmap} * [Split-Apply-Combine and Map-Reduce in R](https://burtmonroe.github.io/SoDA501/Materials/SplitApplyCombine_R/) ``` {r fmap, dependson = "self"} self = with (self, { 分割 = \(x) x |> split (~ cyl); 仕事 = \(x) coef (lm (mpg ~ wt, x)); 集計 = \(x) purrr::map_dbl (x, \(x) x ["wt"]); 個々 = \(f) \(x) purrr::map (x, f); 物件 = mtcars; 比較 = \(管, 前処理, 後処理) with (list (`%管%` = 管), { lhs = 前処理 (物件) %管% (集計 %.% 個々 (仕事) %.% 分割) |> 後処理 (); rhs = 前処理 (物件) %管% 分割 %管% 個々 (仕事) %管% 集計 |> 後処理 (); testthat::test_that ("", testthat::expect_equal (lhs, rhs)); # lookme a = 前処理 (物件); b = 管 (a, 分割); c = 管 (b, 個々 (仕事)); d = 管 (c, 集計); rhs = 後処理 (d); testthat::test_that ("", testthat::expect_equal (lhs, rhs)); }); 比較 (r_curry_bw (flip (id)), \(x) rbind (head (x), tail (x)), id); 比較 (purrr::map, \(x) list (head (x), tail (x)), id); 比較 (r_curry_bw (flip (hom_snd)), \(x) \(y) rbind (head (x), y), \(x) x (tail (物件))); as.list (rlang::current_env ()); }); ``` つづく
397 :デフォルトの名無しさん :2021/06/20(日) 18:58:13.34 ID:dkTIMvj9.net 1つめの"比較"は表を面倒くさい方法で`lm`している。2つめの"比較"は 表の代わりに表のリストを渡している。この場合の"%管%"が前回の投稿の `%pipe%`に相当する。3つめの"比較"は表の代わりに表への写像を渡している。 このように関手パターンを使うと、引数が様々な"形状"に変化する。 本題に入る。以前、次のようなコードを書いた。[boxplot]{#boxplot} ``` {r, dependson = ""} none = with (new.env (), { . = ggplot2::ggplot (mtcars); . = . + ggplot2::aes (x = factor (cyl), y = wt); . = . + ggplot2::geom_boxplot (); print (.); }); ``` `.`が定数である限り問題はないが、途中一箇所でも`. `が関数になると、 無限ループする。[fmap](#fmap)で`lookme`以下の変数`a..d`を全て`a`にすると、 三番目の"比較"で無限ループする。厄介なことに、全て`a`にしても、 一番目と二番目の"比較"は普通に動作する。関数内の変数は検索経路が 異なることに起因する。 単純化すると、次のコードは動くが、 ``` {r, dependson = ""} tryCatch ({ a = 1; a = 2 + a; a; }, error = identity) |> print (); ``` つづく
398 :デフォルトの名無しさん :2021/06/20(日) 19:00:12.82 ID:dkTIMvj9.net 次のコードは無限ループする。 ``` {r, dependson = ""} tryCatch ({ a = 1; a = \(.) . + a; a (2); }, error = identity) |> print (); ``` PythonとJSも似たような挙動をするので、現在主流のインタープリターでは [boxplot](#boxplot)のような横着コードはご法度かもしれない。 おしまい
399 :デフォルトの名無しさん :2021/06/24(木) 19:35:28.50 ID:zSqJWO4e.net 最新のggsaveはデフォルトがragg出力になってかなりきれいになってた いい感じ 同じ条件で比較 https://i.imgur.com/5UOzASY.png https://i.imgur.com/sFisKxS.png
400 :デフォルトの名無しさん :2021/06/26(土) 13:40:20.41 ID:oCVQCLW/.net 特典がいろいろありそう。 * [Modern Text Features in R](https://www.tidyverse.org/blog/2021/02/modern-text-features/) 話変わって>386の続き まずコードを並べる。 ``` {r dict, dependson = "round_py"} dict = with (new.env (), { who_max_h = \(h) \(x) { x = x - max (x); x = exp (x / h); x / sum (x); }; who_min_h = \(h) \(x) who_max_h (h) (- x); ge_h = \(h) \(x) 0.5 * (1 + tanh (0.5 * x / h)); le_h = \(h) \(x) ge_h (h) (- x); as.list (rlang::current_env ()); }); ``` つづく
401 :デフォルトの名無しさん :2021/06/26(土) 13:41:22.67 ID:oCVQCLW/.net ``` {r round_r, dependson = "dict"} dict = with (dict, { round_theta = \(h) \(x) { reticulate::py $ round_theta (reticulate::np_array (x), h); }; round_1nn = \(h, n) { self = (- n) : n; \(x) purrr::map_dbl (x, \(x) { x = self - x; p = who_min_h (h) (0.5 * x * x); sum (self * p); }); }; round_count = \(h, n) { self = 1 : n - 0.5; \(x) purrr::map_dbl (x, \(x) { sum (ge_h (h) (x - self) - ge_h (h) (- x - self)); }); }; as.list (rlang::current_env ()); }); ``` つづく
402 :デフォルトの名無しさん :2021/06/26(土) 13:41:58.53 ID:oCVQCLW/.net ``` {r round_anime, dependson = "round_r", animation.hook = 'gifski', fig.width = 4 * 3} dict = with (dict, { x_max = 3; x = x_max * seq (- 1, 1, len = 1e+2); x_huge = x_max * seq (- 1, 1, len = 1e+3); h = 10 ^ c (- 8, - 6, - 4, (- 3) : 3); old_par = par (mfrow = c (1, 3)); on.exit (par (old_par)); purrr::map (h, \(h) { if (h < 1) { x = x_huge; } title = sprintf ('h = %.1e', h); draw = \(y, ylab, ...) { plot (x, y, type = 'l', ylim = c (- x_max, x_max), xlab = 'x', ylab = ylab, main = title, ...); }; draw (round_theta (h) (x), 'theta'); draw (round_1nn (h, x_max) (x), 'deep'); draw (round_count (h, x_max) (x), 'shallow'); }); as.list (rlang::current_env ()); }); ``` つづく
403 :デフォルトの名無しさん :2021/06/27(日) 21:55:25.14 ID:a078pUkp.net 書けるかな? 次の関数から始める。 ~~~ {.r} nearest_neighbor_integer = \(n) { self = (- n) : n; \(x) purrr::map_dbl (x, \(x) { x = self - x; j = which.min (0.5 * x * x); self [j]; }); }; ~~~ 実数`x`に最も近い`(-n):n`中の整数を選んでいる。この関数の`which.min` のところを`(- n):n`上の確率分布に変更したものを`round_1nn (h, n) (x)` としている。`n`無限大の極限をとると、 [ヤコビのテータ関数](https://en.wikipedia.org/wiki/Theta_function) で書けて`round_theta (x, h)`になる。ヤコビの三重積を有限和で近似して `round_count (h, n) (x)`を得る。`n`を"容量"、`h`を"温度"と書く。 `ge_h (h) (x)`は低温極限でデジタル的な関数`ifelse (x >= 0, 1, 0)`になり、 `round_count`の低温極限は、容量が十分大きければ、ゼロと`x`の間にある 半整数`n + 1 / 2`の数を数える関数になる。 [1-nn](https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm) で解いていた問題`round_1nn`が、ヤコビの三重積を通して、数え上げの問題 `round_count`に転化した形になっている。 アニメを見ると、低温では全部同じ感じだが、高温で`round_theta`とその他に 違いが出てくる。対称性`round_theta (x + k, h) == round_theta (x, h) + k` にガードされて、`round_theta`だけは、高温極限でもゼロへの定数写像に ならない。他の2つは、容量を有限で近似しているために、この周期性が 成り立たない。 つづく
404 :デフォルトの名無しさん :2021/07/03(土) 00:33:16.13 ID:gqk6Zgdk.net 四捨五入や浮動小数点の話を蒸し返す感じになるけど… 1.275-1と0.275を第二位でround()してみる 前者は0.27で後者は0.28になる x1 <- c(1.275-1, 0.275) round(x1, 2) [1] 0.27 0.28 sprintf()で眺めてみるとなんとなく理由がわかる気がする sprintf("%.24f", x1) [1] "0.274999999999999911182158" "0.275000000000000022204460" 0.265でも試してみると両者とも0.26になる x2 <- c(1.265-1, 0.265) round(x2, 2) [1] 0.26 0.26 sprintf()で眺めてみると… sprintf("%.24f", x2) [1] "0.264999999999999902300374" "0.265000000000000013322676" 偶数丸めで切り下げになるケースだけ誤差の範囲が広いのかな??
405 :デフォルトの名無しさん :2021/07/04(日) 14:19:14.50 ID:HlOj3EiR.net 書けるかな?書けたら話をぶった切ってごめん。who_max_hとge_hは個別に 覚えるより、次の関数から芋づる式に覚えた方が安上がりかもしれない。 ニョロニョロニョロ ドット ハスケル max_h h a b = h * log (exp (a / h) + exp (b / h)) min_h h a b = - max_h h (- a) (- b) ニョロニョロニョロ max_hの低温極限はRのpmaxになる。関数 reduce_max (h, x) := reduce (.init = - Inf, .x = x, .f = max_h)は log_sum_expと呼ばれ、低温極限がRのmaxになる。reduce (0, x, +)にsumを 使うのと同じで、"モノイドはreduceしとけ"パターンの1つになっている。 reduce_max (h, x)をxについて微分すると、soft_maxになり、低温極限がRの which.maxをワンホットで表したものになる。コードではsoft_maxをwho_max_h と書いている。関数max_zero (h, x) := max_h (h, x, 0)の低温極限はreluの 有限温度版にあたるsoft_plusと呼ばれる。max_zero (h, x)をxについて微分 すると、シグモイド関数になる。コードではシグモイド関数をge_hと書いている。 ge_h (h, x)をxについて微分すると、Rのdlogisになる。どの関数も低温極限で デジタル的な関数になり、アルゴリズム的な描像を与える。 温度hをプランク定数だと思うと、マスロフの脱量子化という言い方も理解できる。 シグモイド関数はフェルミ分布関数とも呼ばれるが、対となるボース分布関数は zero_maxの逆写像を微分して得られる。ボース分布関数を使っても、 ヤコビの三重積経由で、また別の低温極限が四捨五入になる関数が作れる。 reduce_maxの連続版はlog_integral_expとなるが、reduce_minの連続版は ラプラス近似と呼ばれる。ラプラス近似の補正第一項を正規分布にとることが 多いので、max_zeroが正規分布に対応すると見ることもできる。また、 max_zero (h, reduce_max (h, x))をxについてルジャンドル変換すると、 soft_maxの負のエントロピーになる。 おしまい
406 :デフォルトの名無しさん :2021/07/04(日) 15:45:28.20 ID:17wSvTes.net どうせ過疎だから話をぶった切るなんて気にせず好きに書き込んでいいと思うよ
407 :デフォルトの名無しさん :2021/07/04(日) 22:15:36.27 ID:HlOj3EiR.net [どんな短所にも長所がある](https://en.wikipedia.org/wiki/Cruijffiaans) 例の1つかもね。
408 :デフォルトの名無しさん :2021/07/05(月) 18:25:33.98 ID:ZKGJ/Wxf.net 最近知ったpurrrとpatchworkの組み合わせは役に立たないけど面白いと思った library(patchwork) library(tidyverse) iris %>% nest_by(Species) %>% mutate(plot = list(ggplot(data, aes(Sepal.Length, Petal.Length)) + geom_point() + ggtitle(Species))) %>% pull(plot) %>% reduce(`+`) https://i.imgur.com/Qet93Lj.png
409 :デフォルトの名無しさん :2021/07/10(土) 20:16:42.51 ID:MrP/qszp.net ルジャンドル変換を一般化した凸共役についてまとまった表がある。 * [凸共役](https://en.wikipedia.org/wiki/Convex_conjugate) この記事中の表の下二行と次の記事を照らし合わせてみる。 1. [Softmax Cross-Entropy and Negative Sampling](https://arxiv.org/abs/2106.07250) 2. [Noise Contrastive Estimation](https://arxiv.org/abs/1202.3727) | 凸 | 凸共役 | Bregman情報量 | |:--|:--|:--| | ln (1 + e^x) | x^* ln x^* + (1 - x^*) ln (1 - x^*) | KL情報量 | | - ln (1 - e^x) | ln p (x^*) + x^* ln (1 - p (x^*)) | NCE | p (x) := 1 / (1 + x) 前に書いた四捨五入と対比すると、KLの方がフェルミ分布関数、NCEの方が ボーズ分布関数に対応する。四捨五入の場合はフェルミ分布関数とボーズ分布関数 の裏にテータ関数がいた。KLとNCEの裏にも何かいるかな? 論文をちゃんと読めば答えもしくはヒントがあるかもしれない。 JIS丸めの話がどうしてこうなった?JIS丸め恐るべし。
410 :デフォルトの名無しさん :2021/07/11(日) 09:10:03.37 ID:XVisAPLs.net JIS丸めや四捨五入については皮肉なことにExcelのほうがずっと信用できたりする 良くも悪くもうまいこと誤差処理してくれてる 402の数値をExcelで四捨五入するとすべて期待どおりの結果が得られる
411 :デフォルトの名無しさん :2021/07/11(日) 09:57:15.88 ID:7245Xdb7.net で、Excelはどういう処理してるの?
412 :デフォルトの名無しさん :2021/07/11(日) 15:54:55.28 ID:bUjii7MO.net 知りたきゃ自分で調べろよ
413 :デフォルトの名無しさん :2021/07/20(火) 19:29:44.08 ID:rbQqbOPX.net ggrepelってのいいね 凡例と見比べなくてすむ図が作れる これならカテゴリ多くて色が飽和する場合でも対処できそう 極端な例 https://i.imgur.com/3aKWSES.png
414 :デフォルトの名無しさん :2021/08/08(日) 09:20:58.98 ID:0/5jqUiQ.net readr2.0.0から複数ファイルの読み込みが可能になっていた map_dfr()使わなくていいし読み込みも圧倒的に速くて良い
415 :デフォルトの名無しさん :2021/08/08(日) 12:25:05.96 ID:67RjEJ28.net readr 2.0.0のwrite系関数は、カラム名に日本語があると正しく処理されないバグがないか?
416 :デフォルトの名無しさん :2021/08/09(月) 17:11:15.46 ID:ScMN2hA5.net write_csv試したけど列名に日本語あっても問題なかった でもデータも日本語にしたらたしかに化けた ちなWindows
417 :デフォルトの名無しさん :2021/08/09(月) 19:25:00.36 ID:78aLRiJY.net すべての言語は、Linux 用 例外は、Windows, Android, iOS 用の言語だけ
418 :デフォルトの名無しさん :2021/08/09(月) 23:00:48.70 ID:azeQoSgE.net >>416 追確認ありがとう。やっぱり化けるか。 カラム名の出力抑止したら日本語含むデータは無事に出力されたので、当面、これで逃げとく。
419 :デフォルトの名無しさん :2021/08/10(火) 19:09:10.38 ID:gvV+H24C.net >>418 write_csvのヘルプ見たらutf8で保存されるとあったからこれが理由ぽい データと列名の両方をutf8にしたら化けずに出力できた 具体的には以下を噛ませた #データ変換 %>% mutate(across(where(is.character), enc2utf8)) %>% #列名変換 %>% rename_with(enc2utf8) %>%
420 :デフォルトの名無しさん :2021/08/28(土) 10:48:33.69 ID:C1PCSCJR.net RStudioチートシート一式が更新されてる dplyrなんかは構文が少し違ってきてたからありがたい
421 :デフォルトの名無しさん :2021/09/01(水) 11:39:20.62 ID:tJCXmvec.net >>415 自己レス readr 2.0.1にアップデートしたら>>419 の変換を行わないでもヘッダー、データに日本語を含む場合でも意図した通りに出力されるようになった。
422 :デフォルトの名無しさん :2021/09/02(木) 18:05:05.53 ID:YRbuJpNa.net >>421 これ見て自分も2.0.1にした 確かに問題なくなった 報告ありがとう
423 :デフォルトの名無しさん :2021/10/01(金) 16:50:28.77 ID:zXL6XNPn.net 間違って機械学習スレに書き込んでしまったので、こちらに再書き込み。 Rmdファイル名に日本語が入っているとRStudioでread系の出力が表示されなくなるという謎のトラップに嵌った。
424 :デフォルトの名無しさん :2021/10/01(金) 23:25:13.49 ID:uStRU2+C.net read系の出力ってどういうこと?
425 :デフォルトの名無しさん :2021/10/03(日) 00:12:40.33 ID:TxMIGVRv.net read.csv関数、readr::read_csv関数、readxl::read_excel関数などを端折ってread系と書いてしまった。 動くんだけどエラーも何も表示されないという現象だった。
426 :デフォルトの名無しさん :2021/10/03(日) 22:36:37.13 ID:A1Dyon2q.net 適当に日本語のrmdからread_csv試してみたけど動作もメッセージも特に問題ないみたい 自分が条件を勘違いしてるだけかもだけど
427 :デフォルトの名無しさん :2021/11/21(日) 09:23:02.27 ID:fh+D1s+K.net readrの2.1.0が来てた デフォルトで遅延読込するのが評判悪くて戻したらしい
428 :デフォルトの名無しさん :2022/02/27(日) 21:39:32.73 ID:9Ko2k5KG.net Rstudioで100個のtxtファイル (中身はTsvで3万行2列、1列目は全ファイル共通) を3万行、101列のマトリクスファイルにしようとしています。 left_joinで1列目をキーにして結合するためにデータを100個読み込む際に lf <- list.files(full.names = T) data <- lapply(lf,read.delim) を用いたのですが、 mat <- full_join(data)で結合させようとすると 'full_join' をクラス "list" のオブジェクトに適用できるようなメソッドがありません となってしまいました。 別の関数でこのような結合が可能でしょうか。
429 :デフォルトの名無しさん :2022/02/27(日) 21:47:12.25 ID:9Ko2k5KG.net >>428 dplyr::bind_cols() があるとわかり(rowsしか見つけられていませんでした)、 こちらでdata2<-dplyr::bind_cols(data[1],data[2]) でエラーが出ないことまで分かったのですが、 今度は 1列目が全残りしてしまいました。。。
430 :デフォルトの名無しさん :2022/02/27(日) 22:16:06.74 ID:gyXBEzmR.net >>428 詳細はわかりませんがとりあえず読み込みの部分を以下にすれば結合されたdata.frame(tibble)ができると思います data <- readr::read_tsv(lf)
431 :デフォルトの名無しさん :2022/02/27(日) 22:19:10.43 ID:gyXBEzmR.net あ、ごめんなさい 勘違いしてたのでいったん428は無視してください
432 :デフォルトの名無しさん :2022/02/27(日) 22:24:12.67 ID:gyXBEzmR.net bind_colの代わりにdplyr::left_join()で結合してください
433 :デフォルトの名無しさん :2022/02/27(日) 22:52:32.27 ID:CQidPupJ.net >>428 確認だけど各ファイルの一列目は言わるインデックスで、どのファイルも全く同じ値で全く同じ並びなの? 例えば、1,2,3,...30,000のような。
434 :デフォルトの名無しさん :2022/03/13(日) 15:26:37.06 ID:eNLgiL5g.net >>432 コメントいただきありがとうございます。 data2<-dplyr::left_join(data[1],data[2]) UseMethod("left_join") でエラー: 'left_join' をクラス "list" のオブジェクトに適用できるようなメソッドがありません となってしまいました。 >>433 そのご認識であっています
435 :デフォルトの名無しさん :2022/03/13(日) 16:14:58.16 ID:yMboFGZP.net >>434 1列目がすべて同じ値でデータを結合させるキーとして使う必要がなければ、こんな感じ。 最後に1列目をバインドかジョインさせれば、概ね目的が達成できるのではないかと。 require(tidyverse) # サンプルデータの作成 for (i in 1:10) { data.frame( a = seq(from = 1, to = 100), b = rnorm(100) ) %>% readr::write_excel_csv(file = paste0("./sample_data/sample_", i, ".csv")) } # サンプルデータの結合 list.files("./sample_data", full.names = TRUE) %>% purrr::map_dfc(.f = function(x){readr::read_csv(x) %>% dplyr::select(2)}) 列名でデータが識別出来るようにしたければ、もうひと工夫必要だけど。
436 :デフォルトの名無しさん :2022/03/13(日) 16:23:27.75 ID:yMboFGZP.net ファイル名を列の識別に使うとこんな感じ # サンプルデータの読み込みと結合 list.files("./sample_data", full.names = TRUE) %>% purrr::map_df(.f = function(x){readr::read_csv(x) %>% dplyr::mutate(file = basename(x))}) %>% tidyr::pivot_wider(names_from = file, values_from = b)
437 :デフォルトの名無しさん :2022/03/13(日) 16:44:17.21 ID:eNLgiL5g.net >>435 おお!ありがとうございます。 解釈しながら進めてみます。
438 :デフォルトの名無しさん :2022/03/13(日) 16:44:28.45 ID:yMboFGZP.net >>436 の方は、1列目をキーにleft_joinするのと同じ結果になるので、こちらの方が処理としては汎用性が高いかも。 # サンプルデータの作成 for (i in 0:4) { data.frame( a = seq(from = 1, to = 100), b = rnorm(100) ) %>% readr::write_excel_csv(file = paste0("./sample_data/sample_", i, ".csv")) } # サンプルデータの作成(aの値の範囲を少し変えてある) for (i in 5:9) { data.frame( a = seq(from = 51, to = 150), b = rnorm(100) ) %>% readr::write_excel_csv(file = paste0("./sample_data/sample_", i, ".csv")) } # サンプルデータの読み込みと結合(aが一致しない場合は欠損値NAとなる) list.files("./sample_data", full.names = TRUE) %>% purrr::map_df(.f = function(x){readr::read_csv(x) %>% dplyr::mutate(file = basename(x))}) %>% tidyr::pivot_wider(names_from = file, values_from = b)
439 :デフォルトの名無しさん :2022/03/13(日) 18:12:08.92 ID:Hs1I9giv.net >>429 一列目がすべて同じとのことなのであれば、427の続きで data2[ , -seq(3,199,2)] とすれば必要な列だけ抽出できると思います あとはマトリクスに変換してください join系でうまく行ってなかったのはリストの扱いがわからなかったからなのですね リストにアクセスする場合、 data[1]でなくdata[[1]]としてデータフレームを取り出します
440 :デフォルトの名無しさん :2022/03/17(木) 15:47:55.89 ID:E8UbWdL+.net >>439 すみません。本題ではないと思うのですが、 > for (i in 1:10) { + data.frame( + a = seq(from = 1, to = 100), + b = rnorm(100) + ) %>% + readr::write_excel_csv(file = paste0("./sample_data/sample_", i, ".csv")) のところで エラー: Cannot open file for writing:* './sample_data/sample_1.csv' が出てしまいました・・・
441 :デフォルトの名無しさん :2022/03/17(木) 20:03:45.16 ID:gf49ge7R.net >>440 先にディレクトリ(フォルダ)作らないとだめよ。
442 :デフォルトの名無しさん :2022/03/17(木) 20:07:17.36 ID:gf49ge7R.net なお、そのコードはサンプル用のデータファイルを作るだけだから、既にデータファイルがあるなら作らなくても構いません。
443 :デフォルトの名無しさん :2022/03/18(金) 00:14:42.67 ID:XJUTI8hL.net >>440 繰り返しになりますが、427にあるようにbind_cols(data)でdata2まで作成できたのであれば、あとは437の式で重複するindex列を消せば抽出が完了します マトリクス形式にするにはas.matrix()を使います エラーが出たという433のコードについては439さんがもう回答してくれていますが念のため補足説明します そのコードは作業ディレクトリにsample_dataという名前のフォルダを作ってから試す必要があります Windowsならエクスプローラからフォルダを作成すれば良いでしょう Rでコードを実行するとそのフォルダの中にテスト用のcsvが作成されます(フォルダを覗いてみてください) そのテスト用csvを使った汎用的な方法が色々と紹介されていますので、どういう挙動をするか試してみてください あとは自分の実データに応用すればOKです
444 :デフォルトの名無しさん :2022/04/24(日) 00:44:11.04 ID:XE1mU1xb.net cranにR 4.2.0がきてた Windowsもutf8に マルチバイトの苦労が減るかな
445 :デフォルトの名無しさん :2022/07/02(土) 21:56:48.95 ID:joP41R1K.net VScodeに移行するか悩んでいる
446 :デフォルトの名無しさん :2022/07/03(日) 10:10:53.08 ID:HeQkxcLp.net 利点欠点は知らないけどとりあえず試しに移ってみては
447 :デフォルトの名無しさん :2022/08/07(日) 01:03:05 ID:9gYsg8zx.net Vscodeに移行完了。 他の言語と環境同じなのは楽。簡単に複数のプロセスを走らせることができて便利。 環境変数とかの設定は大変。
448 :デフォルトの名無しさん :2022/08/08(月) 21:50:31.99 ID:Da5wHwf0.net RStudioもPositだかに名称変更して多言語対応を前面に出すらしいから色々迷うところだね
449 :デフォルトの名無しさん :2022/08/16(火) 11:20:03.64 ID:2x3mrzZQ.net 秋光
450 :デフォルトの名無しさん :2022/08/18(木) 23:20:26.19 ID:LfSntVST.net tidyverseにlubridateが追加されたらしい これは便利かも
451 :デフォルトの名無しさん :2022/10/22(土) 22:36:46.32 ID:aNbd4mog.net 書けるかな?
452 :デフォルトの名無しさん :2022/10/22(土) 23:25:40.91 ID:aNbd4mog.net ALTREPを勉強したノート: https://www.klgrth.io/paste/n3aj8 有効期限の選択肢が最長2日で、2日経つと消えちゃう。 一応HTMLということでアップしたが、HTMLとして表示できない。 ダウンロードしてブラウザーで開くと、多分、表示できると思う。 中身はRというより、殆どC++とJSで、偶に日本語が入るという感じになっている。
453 :デフォルトの名無しさん :2022/10/25(火) 21:49:06.83 ID:Q2z+UpND.net facet_wrapで強制的に任意の行×列にする方法がわからない ggh4xのfacet_wrap2はx軸が別の値に変わる致命的なバグがあって駄目だった cowplotとかで強引にやるしかないかな
454 :デフォルトの名無しさん :2022/10/29(土) 23:39:26.00 ID:rG09h/C5.net こういう事? [r - What's the difference between facet_wrap() and facet_grid() in ggplot2? - Stack Overflow](https://stackoverflow.com/questions/20457905/whats-the-difference-between-facet-wrap-and-facet-grid-in-ggplot2) ```{r} g <- ggplot2::ggplot (ggplot2::mpg, ggplot2::aes (displ, hwy)) g + ggplot2::facet_grid (cyl ~ class) g + ggplot2::facet_wrap (cyl ~ class) ``` 前回のALTREPから離れて配列型のイテレーターに進んでみた。 https://www.klgrth.io/paste/wcdat 今回のファイル形式はRmdにしてみた。 Rcppが使える環境なら動作するんじゃないかと思う
455 :デフォルトの名無しさん :2022/10/31(月) 12:33:41.51 ID:dQiGvC9o.net 例えばmpgデータならcylでもclassでも常に3*3のサイズにfacetしたい(不足分はスペース)
456 :デフォルトの名無しさん :2022/11/02(水) 19:51:09.19 ID:p084R0I6.net 結局patchworkのplot_layout()が良かった facet_wrap2()よりかなりめんどくさいが仕方ない
457 :デフォルトの名無しさん :2022/11/06(日) 00:02:51.66 ID:lzqAKK7B.net RのヒープからC++のコンテナーで使うメモリを確保するようにした: https://www.klgrth.io/paste/ampar 今回はサードパーティのライブラリを使っているので、そのままでは コンパイルできないと思う。 * [GitHub - martinus/unordered_dense: A fast & densely stored hashmap and hashset based on robin-hood backward shift deletion](https://github.com/martinus/unordered_dense) ヘッダーファイル一枚のライブラリなので、Rmdの中にヘッダーファイルを コピペすればコンパイルできるようになると思う。
458 :デフォルトの名無しさん :2022/11/07(月) 09:11:56.91 ID:dlXH2Z0U.net 色々とRの深堀りしてるのね
459 :デフォルトの名無しさん :2022/11/23(水) 17:00:11.90 ID:lyqj2jDo.net 前回のカウンターの続きで最終回 [zwzg9](https://www.klgrth.io/paste/zwzg9) 今回は`ankerl`に加えて`boost`も使っている。`boost`はヘッダー一枚 というわけにはいかないので、面倒かもしれない。使っているのは、 `hash_value`と`hash_combine`という2つの関数だけなので、適当な関数で 差し替えられると思う。`NA`と`NaN`の関係を調べている節は、 intelエンディアンのみの対応で、armエンディアンでは動作しないと思う。 実を言うと、`NaN`がいっぱいあることを知らなかった。1954は何の年だろう? ALTREPを勉強した時にかなりギットハブを徘徊した。そこが勉強のピークだっと 思う。今回の実装では、殆どRの勉強はせずに、知ってる関数だけを使っている。 1. `TYPEOF / ALTREP` 1. `Rf_xlength` 1. `DATAPTR_OR_NULL / DATAPTR / XXX_ELT` 1. `Rf_allocVector` 違うアプリケーション、例えば、評価系だと違う関数セットになって、 また勉強が必要になるかもね。
460 :デフォルトの名無しさん :2022/11/25(金) 22:31:31.64 ID:hVmxUGt9.net ファセットの問題は{facetious}のfacet_wrap_strict()でもできた こっちは問題なさそう
461 :デフォルトの名無しさん :2022/11/26(土) 18:24:12.54 ID:ZkJ8SBS0.net [facet_wrap_strict](https://github.com/coolbutuseless/facetious) と `facet_wrap`を並べてみる。 ``` {r na_1954, dependson = ""} . = dplyr::mutate (mtcars, cyl = factor (cyl, lev = c (1 : 8, 1000L))) . = ggplot2::ggplot (., ggplot2::aes (mpg, wt)) . = . + ggplot2::geom_point () . + ggplot2::facet_wrap (~ cyl, nrow = 3, ncol = 3) . + facetious::facet_wrap_strict (~ cyl, nrow = 3, ncol = 3) . + ggplot2::facet_wrap (~ cyl, nrow = 3, ncol = 3, drop = F) ``` 神エクセル繋がりということで [A Bayesian probability worksheet](https://terrytao.wordpress.com/2022/10/07/a-bayesian-probability-worksheet/)
462 :デフォルトの名無しさん :2022/11/28(月) 18:09:29.71 ID:esP8vKsO.net その例で行くなら… cylはいじらずそのままでfacet_wrap_strictするのが求める図かな
463 :デフォルトの名無しさん :2023/01/19(木) 11:03:41.55 ID:KKbwsgWQ.net RのS5クラス使って継承する場合、コンストラクタ中で継承するクラスのコンストラクタを呼ぶことはできないのかな? つまりクラスAとクラスBを定義して、クラスBがクラスAを継承している場合、クラスBのコンストラクタ中でクラスAのコンストラクタを呼ぶ方法 ちょっとググったらS4クラスは出来そうなんだが、S5クラスのは解決策が見当たらんかった 別途自前でクラスAのコンストラクタ本体を定義して、クラスBのコンストラクタからそれを呼ぶしかないか?!
464 :デフォルトの名無しさん :2023/01/20(金) 19:06:37.10 ID:tvsG8hGF.net R6はどうだろう
465 :デフォルトの名無しさん :2023/02/04(土) 08:53:58.96 ID:QWz+y8KS.net dplyrを1.1.0にしてみた .byはまあまあ便利だけどtally()には使えなかった
466 :デフォルトの名無しさん :2023/02/12(日) 21:15:52.26 ID:dcVKzcVl.net ナンノコッチャと思って調べたら [A Heisenbug lurking in async Python | Hacker News](https://news.ycombinator.com/item?id=34754276) 専門用語だったでござる。 [Heisenbug - Wikipedia](https://en.wikipedia.org/wiki/Heisenbug)
467 :デフォルトの名無しさん :2023/02/14(火) 18:38:12.15 ID:dFdG4M+K.net ヒヤリハットみたいな駄洒落はどこでもあるのね
468 :デフォルトの名無しさん :2023/02/16(木) 19:25:35.83 ID:76X7tEQ5.net こうした言葉を思いつくのは才能なんだろうね。 Rだと簡単にハイゼンバグの例を作れた。 ``` {r a_10850, dependson = ""} uncertainly = with (new.env (), { plus = \(x) \(y) x + y x = 1L plus_1 = plus (x) x = 1000L plus_1 (2) |> print () }); ``` アレレ?ということでデバッグ文を入れてみる。 ``` {r a_29042, dependson = ""} principle = with (new.env (), { plus_debug = \(x) { cat ("Schr?dinger says ", x, "\n", sep = "") \(y) x + y } x = 1L plus_1 = plus_debug (x) x = 1000L plus_1 (2) |> print () }); ``` デバッグ文の有無で挙動が変わる。`uncertainly`の挙動は、バグではなく、 言語仕様だと思った方が良いと思う。 `uncertainly`の挙動を防ぐには関数`force`を使えば良い。 * [How to not fall into R's 'lazy evaluation trap](https://stackoverflow.com/questions/29084193)
469 :デフォルトの名無しさん :2023/02/16(木) 19:27:35.51 ID:76X7tEQ5.net タイトルに"遅延評価"が入っているが、遅延評価自体の問題ではなく、 Rの実装に原因がある。Haskellも遅延評価だが、`uncertainly`のような 挙動が起きれば、Haskellはその存在意義を失う。 ``` ghci import Data.Functor.Identity (Identity (..)) :{ uncertainly :: (Monad f) => f Int uncertainly = do x <- pure 1 plus_1 <- pure (x +) x <- pure 1000 pure $ plus_1 2 :} runIdentity uncertainly flip ($) () uncertainly maybe 0 id uncertainly ``` <pre> 3 3 3 </pre> 言語仕様レベルでのトレードオフかもしれない。 * 局所最適化と大域最悪化 * 整合性とコンパイル時間 * 等など
470 :デフォルトの名無しさん :2023/02/19(日) 11:12:54.40 ID:CwNaXfgw.net magrittrの例を少し改変 # fns first <- function(x){ message("first") invisible(x) } second <- function(x){ message("second") invisible(x) } # lazy NULL %>% first() %>% second() # eager NULL %!>% first() %!>% second()
471 :デフォルトの名無しさん :2023/02/19(日) 23:57:13.24 ID:5hVGJ6gZ.net ビックリパイプは知らなかった。"抜かりなし"だね。ただし、ビックリパイプは ハイゼンバグとは関係ないかな。 ハイゼンバグから離れて、宇宙大戦争について書いてみたい。 `lapply`等のループ系の関数は、最終的にC関数`R_forceAndCall`を呼び出す。 * [apply.c](https://github.com/wch/r-source/blob/trunk/src/main/apply.c) Rは、"フォースと共にあらんことを"などと呑気なことを言っている場合ではなく、 フォースと共にあらねば死んでしまう。 前回のコード`uncertainly`は変数`x`の使い回しが敗因だが、ループ系の関数 では変数を使い回すしかない。そのために、ループ系の関数ではフォースが必須 になっている。98パーセントぐらいの使用例では、フォース抜きでも動作する (当社調べ)が、残りの2パーセントでコケる。僅か2パーセントでも、 プログラミングをギャンブルにしないためには、穴を塞いでおく必要がある。
472 :デフォルトの名無しさん :2023/02/23(木) 21:58:25.40 ID:OvjjRMrU.net do.call()ならどうだろう
473 :デフォルトの名無しさん :2023/02/26(日) 00:14:58.50 ID:Qcp1BikG.net 上のコード`uncertainly`の挙動を"プロミスの罠"と書くことにする。 ここでの"プロミス"は、JSの"プロミス"ではなくて、Rでの"変数"の 実装方法を指す。 * [6 Functions | Advanced R](https://adv-r.hadley.nz/functions.html) この記事には次の一節がある。 > You cannot manipulate promises with R code. Promises are like a **quantum state:**: ... 多分、ここでの"量子状態"はハイゼンバグと同じ現象を指しているんだと思う。 観測すると、状態が変化してしまう。 関数`do.call`自体はプロミスの罠と関係しないと思う。 ``` {r a_28697, dependson = ""} do.call (`+`, list (1L, 2L)) ``` Pythonだと次のコードに対応する。 ``` {python a_10786, dependson = ""} (lambda x, y: x + y) (* range (1, 3)) ``` 殆どのプログラミング言語で、関数の引数リストは [一級市民](https://en.wikipedia.org/wiki/First-class_citizen) でないように思う。一級市民でない代わりに、一級市民の配列からの変換が 用意されている。Pythonでは`*`という関数がビルトインで用意されている。 Rでは引数リストを直接作れるかもしれないが、`do.call`で配列から 変換するのが一般的だと思う。
474 :デフォルトの名無しさん :2023/02/26(日) 23:03:36.96 ID:Qcp1BikG.net 書けるかな?
475 :デフォルトの名無しさん :2023/02/26(日) 23:09:42.38 ID:Qcp1BikG.net 自分の知る限り、プロミスの罠にハマるのは次のパターンに限られる。 ~~~ {.r} x = "hello" g = f (x) x = "world" g () ~~~ "関数を返す関数"`f`に、"変数"`x`を代入した時にプロミスの罠が可能性が 出てくる。Rの評価戦略はHaskellと同じ [コールバイニード](https://en.wikipedia.org/wiki/Evaluation_strategy) に分類されている。上の例では、次の場合にプロミスの罠が発生する。 1. 関数`f (x)`の中で引数`x`がニードにならず、 1. 返り値の関数`g`に渡される。 次の例はプロミスの罠が発生する。 ``` {r a_20914, dependson = ""} rude = with (new.env (), { const = \(x) \(...) x x = "hello" g = const (identity (x)) x = "world" g () |> print () }); ``` 関数への代入はニードでないので(by definition)、関数適用の連鎖 `const (identity (x))`の中にはニードがない。そのために、最終的に`g ()`が コールされるまで引数`x`は評価されない。コード`g ()`がコールされた時点で 引数`x`の定義を探しに行くので、プロミスの罠にハマる。
476 :デフォルトの名無しさん :2023/02/26(日) 23:11:33.81 ID:Qcp1BikG.net コールバイニードを実現するためには、コンパイラーが内部的に次のように 書き換える必要があると思う。 ``` {r a_1451, dependson = ""} polite = with (new.env (), { const = \(x) \(...) x x_1 = "hello" g = const (identity (x_1)) x_2 = "world" g () |> print () }); ``` [静的単一代入](https://en.wikipedia.org/wiki/Static_single-assignment_form) と呼ばれる操作と同じだと思う。この書き換えはループ処理では必須になる。 コード`rude`はアカン奴として切り捨てることができるかもしれないが、 ループ処理では変数の多重定義が避けられない。Rでは、何らかの理由で、 この書き換えが省略されているために、プロミスの罠が発生するのかな?と 思っている。 コード`rude`からコード`polite`への書き換えを上とは異なる形で行ってみる。 Rではできないので、Pythonを使う。
477 :デフォルトの名無しさん :2023/02/26(日) 23:12:32.78 ID:Qcp1BikG.net ``` {python a_14213, dependson = ""} ##| cache: false # def none (): id = lambda a: a const = lambda x: lambda * y: x def lhs (): x = "hello" g = const (id (x)) x = "world" return g () def rhs (): return (lambda x: (lambda g: (lambda x: g ()) ("world")) (const (id (x)))) ("hello") assert lhs () == rhs () none (); ``` 関数`lhs`から関数`rhs`への書き換え規則は次のようになる。[rule]{#rule} ~~~ {.python} y = f (x) z = g (x, y) rest (x, y, z) == (lambda y: z = g (x, y) rest (x, y, z) ) (f (x)) == (lambda y: (lambda z: rest (x, y, z)) (g (x, y))) (f (x)) ~~~
478 :デフォルトの名無しさん :2023/02/26(日) 23:25:12.65 ID:Qcp1BikG.net この書き換え規則を適用した結果、関数`rhs`では、静的単一代入への変換は、 [ラムダ計算](https://en.wikipedia.org/wiki/Lambda_calculus) のアルファ変換 に置き換わる。この意味では、静的単一代入とアルファ変換は同じことになる。 実際のコードでは、分岐、ループ、副作用が入ってくるので、こんな単純は 話では済まないと思うが、極度に単純化すると、静的単一代入とアルファ変換は、 単に、方言の違いということになる。 Rの場合は、書き換え規則[rule](#rule)は等価な変換にならない可能性がある。 特に、プロミスの罠が現れた場合は、挙動が変わると思う。 余談だが、書き換え規則[rule](#rule)をモナドに拡張したものがHaskellの [do-記法](https://en.wikibooks.org/wiki/Haskell/do_notation) になっている。 ~~~ {.python} y <- f (x) z <- g (x, y) rest (x, y, z) == kleisli-extension (lambda y: z <- g (x, y) rest (x, y, z) ) (f (x)) ~~~ モナドが恒等関数の場合に[rule](#rule)に一致するので、do-記法を [rule](#rule)の拡張と言って差し支えないと思う。 おしまい
479 :デフォルトの名無しさん :2023/03/01(水) 23:45:23.13 ID:X+BX12eb.net [トランスフォーマー](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) についての記事: オーサーヒアーかな? * [Coinductive guide to inductive transformer heads](https://news.ycombinator.com/item?id=34970877) 中を読んでいないが、アテンション機構を [ホップ代数](https://en.wikipedia.org/wiki/Hopf_algebra) で説明、もしくは、 ホップ代数を使ってアテンション機構の類似物を導出するという話のようだ。 この手の救世主的な話はがっかりすることが多いので、過大な期待は禁物かも。
480 :デフォルトの名無しさん :2023/03/02(木) 07:01:07.09 ID:FFiKbXDz.net g = do.call(const, list(x)) ではどうだろう
481 :デフォルトの名無しさん :2023/03/02(木) 07:26:39.75 ID:rDVggB7z.net RのS5クラス定義(setRefClass)ってsave、loadでシリアライズ、デシリアライズ出来ないのか デシリアライズされたメンバ関数にアクセスできない
482 :デフォルトの名無しさん :2023/03/04(土) 20:31:08.80 ID:0X36s/jF.net ## Rにおけるオブジェクト指向への取り組み 趣旨は新規フレームワークR7の紹介だが、既存のフレームワークの俯瞰図 としても使いやすいと思う。 * [What is R7? A New OOP System for R](https://www.jumpingrivers.com/blog/r7-oop-object-oriented-programming-r/) ## オブジェクト指向とは? 次の記事を取り上げてみる。 * [Object Oriented Programming Features of Rust](https://doc.rust-lang.org/book/ch17-00-oop.html) 内容については賛否両論だと思う。しかし、箇条書きできるということが、 オブジェクト指向が単一の概念でないことを示しているように思う。 ## S3はオブジェクト指向か? 比較のために、S3のキーワード`default`を使わないで書く。 ``` {r a_3770, dependson = ""} none = with (new.env (), { to_string = \(x, ...) UseMethod ("to_string", x) as_string = \(x, ...) UseMethod ("as_string", x) to_string.Base = \(x, ...) as_string (x, ...) as_string.Base = \(x, ...) to_string (x, ...) to_string.Derived = \(x, ...) paste0 ("hello ", class (x)) as_string.Derived = as_string.Base structure (identity, class = "Derived") |> as_string () |> print () }); ``` `Base`クラスは、関数`to_string`か関数`as_string`の"どちらか1つを実装せえ"と言っている。
483 :デフォルトの名無しさん :2023/03/04(土) 20:34:04.91 ID:0X36s/jF.net 似た内容をPythonで書いてみる。 ``` {python a_8560, dependson = ""} class Base: def to_string (self): return self.as_string () def as_string (self): return self.to_string () class Derived (Base): def to_string (self): return "hello " + type (self).__name__ Derived ().as_string () ``` Haskellで書いてみる。 ``` haskell class Base_ a where to_string :: a -> String to_string = as_string as_string :: a -> String as_string = to_string instance Base_ () where to_string :: () -> String to_string = ("hello " ++) . show as_string () ``` <pre> "hello ()" </pre>
484 :デフォルトの名無しさん :2023/03/04(土) 20:37:50.63 ID:0X36s/jF.net ワンセットの関数群をインターフェースと書く。 1. Pythonのクラスでは、 * 構造体の定義とインターフェースの定義と実装が同時に行われる。 1. HaskellのクラスやRのS3では、 * 構造体とインターフェースは別々に定義される。 * インターフェースの実装は既存の"構造体"に対して行われる。 HaskellやRの"構造体"には、通常の構造体に加えて、関数も含まれる。 構造体とインターフェースが別々に定義される点で、RのS3はHaskellのクラスに 近いように思う。 おしまい
485 :デフォルトの名無しさん :2023/03/26(日) 10:03:46.90 ID:z5V/p30e.net join_by()が便利で感動した 気象データのマージがすごくシンプルになった
486 :デフォルトの名無しさん :2023/03/26(日) 22:59:22.57 ID:Dr7EPpsh.net 使用イメージがわかない。どのあたりが便利ですか?
487 :デフォルトの名無しさん :2023/03/27(月) 22:57:14.70 ID:huaNY8vp.net 任意の地点・期間における測定値についての風向風速などの気象の影響をみるため近傍アメダスの気象データをマージする際に、便利になったと実感しました 具体的にはマージの際にbetween(時刻,)の条件が追加できるようになったのが大きいです 処理が重いかコードが長いかだった上のマージ処理が、join_by(地点名, between(time, start_time, end_time))で済むようになりました
488 :デフォルトの名無しさん :2023/03/30(木) 00:47:43.72 ID:7ArmqfaI.net [非等価ジョイン](https://en.wikipedia.org/wiki/Relational_algebra) は 最近になって関数`dplyr::xxx_join`に導入されたらしい。 * Rで非等価結合 (2) * [dplyr 1.1.0: Joins](https://www.tidyverse.org/blog/2023/01/dplyr-1-1-0-joins/) [ラッキー](https://www.youtube.com/watch?v=xBJMr1v5Zuw) 。 関数`vctrs::vec_locate_matches`には、以前から限定された形の非等価ジョイン のオプションがあったので、実用的な形にするのに時間がかかったのかもしれない。 リスト内包表記が使いたいのでPythonで書く。 ``` {python a_32372, dependson = ""} #| cache: false # def slow_matches (pred, zipper): #{ def go (a, b): #{ a = pandas.DataFrame ({"" : a}).groupby ("").groups b = pandas.DataFrame ({"" : b}).groupby ("").groups key = ((j, k) for j in a.keys () for k in b.keys () if pred (j, k)) val = (zipper (a [j], b [k]) for (j, k) in key) val = zip (* itertools.chain (* val)) return (numpy.fromiter (val, dtype = numpy.int32) for val in val) #} return go #}
489 :デフォルトの名無しさん :2023/03/30(木) 00:49:00.50 ID:7ArmqfaI.net def none (): #{ a = numpy.random.choice (8, 2 * 8, replace = True) b = a + 4 def go (pred, zipper): #{ (j, k) = slow_matches (pred, zipper) (a, b) out = pandas.DataFrame ({"a" : a [j], "b" : b [k]}) print (out) #} go (lambda a, b: a == b, itertools.product) go (lambda a, b: a == b, lambda a, b: itertools.islice (zip (a, b), 1)) go (lambda a, b: abs (a - b) <= 1, itertools.product) go (lambda a, b: abs (a - b) <= 1, lambda a, b: itertools.islice (zip (a, b), 1)) #} none (); ``` `dplyr::xxx_join`の数々のオプションは理解できていないが、`NA`絡み以外は、 コールバック`pred`と`zipper`でかなりカバーしてるんじゃないかと思う。 ジョインの操作自体は明朗会計だが、実行時性能がボッタクリ価格に転嫁される というプログラミング社会が抱える構造的な問題が反映されている。 おしまい
490 :デフォルトの名無しさん :2023/03/30(木) 18:24:14.72 ID:Yqa5DxWU.net 一応Rスレだしコード一式を載せるならRにしてほしいな
491 :デフォルトの名無しさん :2023/03/31(金) 01:01:10.23 ID:3FvfgxM7.net 正直、書き方を思い出すためだけに、話題にかこつけて、わざと異なる プログラミング言語で書くこともある。しかし、今回は純粋に、処理の道筋を 単刀直入な形で表せるプログラミング言語を選択した。 [線形回帰](https://en.wikipedia.org/wiki/Linear_regression) を例にとる。 Rで線形回帰はとても書きやすい。しかし、線型回帰をRのイディオムとして 覚えるよりも、線形代数として覚えた方が長い目で見た時に利益になると思う。 同じように、等価ジョインは [プルバック](https://en.wikipedia.org/wiki/Pullback_(category_theory)#Sets) に対応する。等価ジョインを、Rのイディオムとして覚えるよりも、 単純な`for`ループの形で覚えた方が長い目で見た時に利益になると思う。 リスト内包記法は`for`ループを簡潔に書くための記法になっている。
492 :デフォルトの名無しさん :2023/04/15(土) 20:49:08.02 ID:Mf5VNEJ8.net プルバックの話の続きをアップした。 * [JSFiddle](https://jsfiddle.net/ytkhdpcq/show) プルバックのカリー化の話になっている。プルバックの話はこれでお終い。 洗練された話は次の記事にある。 * [locally cartesian closed category in nLab](https://ncatlab.org/nlab/show/locally+cartesian+closed+category) 表計算の立場で見ると、"何が問題なのかわからない"問題かもしれない。 ある規則を満たす表でサマリーするとプルバックのカリー化になる。
493 :デフォルトの名無しさん :2023/04/24(月) 19:43:15.59 ID:Jj998bTN.net 4.3.0入れてみた パイプがまたひとつ便利になっていい感じ Windowsでパスが長くても通るようになったのも嬉しい
494 :デフォルトの名無しさん :2023/04/26(水) 12:00:07.89 ID:GTOaZ7cP.net どなたか教えてくだされ 対照実験の医療統計をしたいと思って 傾向スコアマッチングにしようと思ってます 肺がん手術を実施した人たち200症例のうち10人だけ 手術後に合併症を起こしていました この場合 「合併症を起こしたグループ」・・・10人 「合併症を起こさなかったグループ」・・・190人になり 患者の背景で傾向スコアマッチングをキャリパー幅0.2でペア分けすると 各群8人ずつの比較になってしまいます。 これで優位差を出す統計するには数が少なすぎるのであまりにも乱暴な統計になりますか? それとも元々のサンプルが200人から選りすぐりのマッチングさせた8人ずつを選んでいるので8人ずつと少なくても問題ないですか?
495 :デフォルトの名無しさん :2023/04/26(水) 18:48:06.52 ID:ZF8W3LJH.net 共変量のバイアスがより少ないサンプルが得られますが、サイズが8人の二群比較なのは変わらないんじゃないかと思います
496 :デフォルトの名無しさん :2023/04/26(水) 23:58:34.61 ID:GTOaZ7cP.net >>495 つまりサイズが8人ずつの比較では 優位差を言うには弱いと思いますか?
497 :デフォルトの名無しさん :2023/04/27(木) 08:26:17.11 ID:vIGDv5il.net >>496 検定はサンプルサイズ込みの判定なので8人であっても二群に有意な差があったと言って差し支えありません 有意水準が甘ければ弱いとは感じますが 一方で、検定は標本のバイアスが除去できていることを保証してくれません
498 :デフォルトの名無しさん :2023/05/13(土) 14:17:33.54 ID:LcdFqRfa.net スレッドの質をガクッと下げるが、Rの非標準評価で遊んでみた。 * [JSFiddle](https://jsfiddle.net/fo1qjt87/show)
499 :デフォルトの名無しさん :2023/05/16(火) 14:12:25.04 ID:T6FZDpAX.net 4.3.0のWindows版はdir()にバグあるね リストがまともに取得できない 4.2.3に戻した
500 :デフォルトの名無しさん :2023/05/19(金) 19:12:10.55 ID:LBQCZv0F.net EZR使ってる人いる?
501 :デフォルトの名無しさん :2023/05/19(金) 23:40:20.00 ID:AtidLON9.net EZRまだ更新続いてて驚いた すごいな
502 :デフォルトの名無しさん :2023/05/21(日) 15:55:45.05 ID:Ifo/fxoU.net 10年以上前からあるスレでようやく500ゲット!
503 :デフォルトの名無しさん :2023/05/21(日) 20:10:58.14 ID:F9CBOLLZ.net 750に達するのにもう10年を要するだろう
504 :デフォルトの名無しさん :2023/05/22(月) 00:40:13.35 ID:Cnh2SEE8.net tibbleを利用してデータ探索しているんだけど、2つの変数で条件つけて散布図つくるにはどんな手順踏んだらいいのか…
505 :デフォルトの名無しさん :2023/05/22(月) 06:06:37.46 ID:wj8Gj0ut.net 変数1をプロットの色にして変数2をサイズにするとかじゃだめなの?
506 :デフォルトの名無しさん :2023/05/22(月) 09:44:06.92 ID:/JtWuqEq.net それも一つの方法ですね。ありがとう ただ、目的以外の条件をプロットしたくないのです。 tibbleの構成としては、観測が4時点、変数がたとえば6個(うち1つは個体識別番号で、変数としてはA-Eの5種類あるとしましょう)のような感じで、 散布図のx軸に「観測時点1における全個体の変数A」 y軸に「観測時点4における全個体の変数E」 をプロットしたいのです。 個体識別番号をキューにして、異なる時点の異なる種類の変数を散布図にするとでもいいましょうか…
507 :デフォルトの名無しさん :2023/05/22(月) 11:53:24.61 ID:wj8Gj0ut.net その要件だと以下のような感じでいけると思います library(tidyverse) df <- tibble( time = rep(1:4, each = 5), id = rep(1:5, 4), a = rnorm(20), b = rnorm(20), c = rnorm(20), d = rnorm(20), e = rnorm(20) ) df |> pivot_wider(id_cols = id, names_from = time, values_from = c(a, e)) |> ggplot(aes(a_1, e_4)) + geom_point()
508 :デフォルトの名無しさん :2023/05/22(月) 14:40:05.73 ID:7X6vWo+R.net ありがとうございます! それをヒントに試してみます。
509 :デフォルトの名無しさん :2023/05/24(水) 23:00:43.06 ID:1oF+cvFs.net >>507 これ、もしかして途中ではないですか?
510 :デフォルトの名無しさん :2023/05/25(木) 05:49:23.72 ID:NLUeSyH/.net >>509 要件の理解が違っていなければ散布図作成まで行きますよ time1でのaの値とtime4でのeの値をid毎にプロットしています
511 :デフォルトの名無しさん :2023/05/25(木) 07:49:04.33 ID:DfoFl+x4.net >>510 失礼しました こちらのビューワの問題で、ブラウザでみたらスクリプトの最後まで表示されました💦
512 :デフォルトの名無しさん :2023/05/26(金) 13:34:57.26 ID:gPviguuO.net >>510 教えてもらったスクリプトでドンピシャでした、ありがとうございます。
513 :デフォルトの名無しさん :2023/05/27(土) 00:00:44.30 ID:qqVzW/zi.net どなたか統計素人の私に教えてください 医療でA群100名とB群100名をいろんな観点から 比較するとします 背景を揃えるために傾向スコア分析で キャリパー0.2で取って30ペア(合計60人)を抽出しました 例えば ①アミラーゼの値とかを統計にかけたいときは、その60人のアミラーゼのデータをまずは正規分布かどうかをShapiro-wilk検定で測って、0.05を上回っていたら「正規分布」と見なして、今度はこれら60人のアミラーゼのデータが等分散かどうかを確認するためにf検定を行なって等分散だったらt検定(Student's t-test)、違ったらWelch's t-testで優位差があるかどうかを調べる。 もしShapiro-wilk検定が0.05未満で非正規分布だったときはMann-whitney's U検定で優位差があるかどうかを調べる。 ↑Q1. この認識であってますか? Q2. この正規分布を計るのはペアを作った後のデータ(n=60)で、正規分布かどうか?等分散かどうか?を見ますか? それともマッチング前のデータ(n=200)で正規分布かどうか?等分散かどうか?を確認するべきですか? Q3. アミラーゼじゃなくて他の連続変数の項目(BMIだったり、血圧だったり、白血球数だったり)の優位差を調べる場合も 全て上の流れで一つ一つの項目ごとで正規分布か?等分散か?など確認していって適宜、該当する算出法を項目ごとに採用して優位差を測る必要がありますか? もし良ければ教えていただけるとありがたいです
514 :デフォルトの名無しさん :2023/05/27(土) 19:37:35.09 ID:H+hysMph.net 素人だと思ううちは傾向スコアには手を出さないほうがいいような気がする
515 :デフォルトの名無しさん :2023/05/27(土) 22:19:54.02 ID:Z7qvu7kx.net >>514 上記の場合はどういうかんじでやるのが 最適解になるのかだけでも教えてもらえないでしょうか?
516 :デフォルトの名無しさん :2023/06/02(金) 21:25:38.69 ID:AkfCPeTx.net writexlパッケージで保存すると時刻のタイムゾーンは反映されないのね
517 :デフォルトの名無しさん :2023/06/13(火) 17:38:19.62 ID:J5T/voP2.net ggraggedパッケージがなかなか便利 facet_grid()を詰めて並べられる
518 :デフォルトの名無しさん :2023/06/18(日) 13:00:54.90 ID:13gXw1hf.net R4.3.1にした dir()関連が直ってるようでひと安心 標準パイプの新機能もようやく使える
519 :デフォルトの名無しさん :2023/06/18(日) 16:20:13.18 ID:ECqif9s2.net しっぽりしてえな
520 :デフォルトの名無しさん :2023/06/19(月) 07:17:50.83 ID:lFY/Y6gc.net ggplot2のカラーパレットのデフォルトが変わったりしました? 棒グラフの色の割り当てが変わった気がする…
521 :デフォルトの名無しさん :2023/06/19(月) 19:42:23.18 ID:CYQnxNgF.net >>520 変わってないはず ただggplot2のデフォルトはグループ数に応じて関数で色を割り当ててるのでグループ数が異なると違うパレットのように感じるとは思います
522 :デフォルトの名無しさん :2023/06/19(月) 20:01:30.62 ID:b0yPHKbc.net 株価データを取得したいがためにRを弄り始めたけど中々難しいね ググってコピペしたコードを一つ一つパッケージと関数の挙動を調べているけど やりたいこと全てができるようになるまでは遠そうだ
523 :デフォルトの名無しさん :2023/06/19(月) 22:06:40.20 ID:J5tIl656.net >>522 データをどこから持ってくるかによって随分難易度は違う。 ファイルとしてダウンロードできるところもあるし、 スクレイピングが必要なところもある。場合によってはせれにうむとか。
524 :デフォルトの名無しさん :2023/06/22(木) 23:31:13.20 ID:eZc4H/Dz.net 企業が求めるエンジニア言語ランキング 2位「R」 https://www.itmedia.co.jp/news/spv/2306/20/news183.html 3位以下を大きく引き離しててすごいけど… Rユーザの少なさを反映しただけな気もする
525 :デフォルトの名無しさん :2023/06/25(日) 11:51:31.98 ID:JqE+uKYL.net Rの求人なんてみたことない…
526 :デフォルトの名無しさん :2023/06/25(日) 15:23:19.17 ID:XZytU2Vy.net >求人数のトップ3は1位「C言語」(39万2559件)、2位「R言語」(30万3759件)、3位「Go」(8万3922件)だった。 >このランキングは、SalesNow DBに1月1日から5月31日までに載った114万5294件の有効求人から算出した。 5ヶ月で30万件もあったらしい Pythonが4万件弱なところを見るとデータ解析用言語を列記したわけじゃなく純粋にRの需要があったみたいだ 不思議
527 :デフォルトの名無しさん :2023/06/26(月) 18:52:56.83 ID:wRy8Kzvb.net 結局企業で欲しいのは統計処理だから、統計処理ならRだろうっていう短絡的な 求人が多かったってことじゃない?
528 :デフォルトの名無しさん :2023/06/28(水) 18:59:42.22 ID:z2KrS2jG.net いくつか求人サイト見てみたけどRのみなんて求人はほぼ皆無でほとんどがPythonとの併記だった これ集計ミスかもね 同じ会社の別の期間のランキング見るとRは10位以内に入ってないし
529 :デフォルトの名無しさん :2023/06/28(水) 19:11:13.31 ID:pwcxWBkk.net 金が有ーる(R)といい なんちって
530 :デフォルトの名無しさん :2023/06/29(木) 08:36:21.11 ID:szIurvDh.net 業∞!!!! 字∞!!!!! 苗∞!!!!!! 米∞!!!!!!! 畑∞!!!!!!!! 灰∞!!!!!!!!! 糞∞!!!!!!!!!! 机∞!!!!!!!!!!!
531 :デフォルトの名無しさん :2023/07/23(日) 03:41:51.31 ID:SQtd3M8i.net 結構何年か前にRは結構古臭いし、言語仕様もわかりづらいし衰退するのでは、と書いているのを 読んだことがあるけど、逆に今だと他の商用統計パッケージが廃れる勢いなのにRって立場が盤石な 気がする なんで?
532 :デフォルトの名無しさん :2023/07/24(月) 10:46:27.45 ID:uQbqJHBb.net AIブームでPythonに全部もってかれると思ったけどそうでもなかったね 先発優位で統計屋や大学教授が昔からRユーザーってのもあるのかも? ユーザー視点からだとtidyverseの存在が大きいと思う 505のように地味に手間がかかりそうな処理が関数ひとつでひょいと処理できるとかすごい
533 :デフォルトの名無しさん :2023/07/24(月) 12:50:03.13 ID:IaCKgEWP.net ど〜も〜!ご存じオナニーマン チン太郎でーす!
534 :デフォルトの名無しさん :2023/07/25(火) 14:51:45.41 ID:iTChcdyR.net >>531 今でもC/C++が盤石なのと同じ理由な気がする
535 :デフォルトの名無しさん :2023/07/25(火) 22:12:29.13 ID:KSU0u1F8.net とくに大学の研究室とかは、同じような機能のプログラムを別言語に コンバートする作業は雑用でしかないので誰も積極的にはやらない。 RでできるのならこのままRでいいじゃん、もしくはフォートランでもw みたいな感じ やったところでなにか新しい知見が得られるわけもなし。
536 :デフォルトの名無しさん :2023/07/26(水) 14:36:34.35 ID:/vrstjVu.net 昔の医学分野の統計処理はSASがデフォだったけど COVID-19で疫学の人(西浦先生とか)がRガンガン使ってるの見て疫学以外でもRが広がってる 学会行くとggplotで書いたグラフいっぱい見る
537 :デフォルトの名無しさん :2023/07/30(日) 15:01:13.36 ID:/zgOfttX.net ggplot2のデフォルトテーマは微妙なので変えているけどいつも悩む ggthemesをもとにそこから装飾することが多い
538 :デフォルトの名無しさん :2023/07/31(月) 13:12:54.07 ID:sgBBFIN2.net >>535 むしろ結果が違ってたらωωω
539 :デフォルトの名無しさん :2023/08/08(火) 23:42:45.27 ID:D9D8OCal.net Rしばらく使ってないから忘れそう
540 :デフォルトの名無しさん :2023/08/23(水) 14:24:09.90 ID:LaIh/7Co.net ついにExcelでPython使えるようになるらしい マイクロソフトはRのベンダー買収してMRANとかやってたのに時代の流れかな
541 :デフォルトの名無しさん :2023/08/24(木) 07:11:35.29 ID:UfAeCzV0.net Pythonでexcel弄るのは 15年以上前から出来てるのを今更 excel上のpythonで実行する方が遅い可能性まである
542 :デフォルトの名無しさん :2023/08/25(金) 13:03:41.78 ID:8Z9WZ/AE.net PythonからExcelをいじることとExcelでPythonが動くことは全く違う
543 :デフォルトの名無しさん :2023/08/25(金) 13:58:38.54 ID:5+gJach+.net くりゃうどω
544 :デフォルトの名無しさん :2023/08/25(金) 14:03:48.50 ID:HPTKrBcu.net pythonは何故かPCでJupyter notebookが不具合で使えなくてな 導入時点でコケるとその言語をやる気失くす…Rはその点、導入が簡単で良かった
545 :デフォルトの名無しさん :2023/08/27(日) 01:44:38.85 ID:VsjIkj4j.net Excelも最近はTidydata志向で、パワークエリやパワーピボットで再現性のある加工や分析が できるようになってきているけど、使い始めはなかなかいいかな、と思ったがちょっと凝ると やっぱり複雑化してメンテできないVBAみたいになっちゃうなw ま、RやPythonだからメンテ性がいいというわけでもない気はするけどw
546 :デフォルトの名無しさん :2023/08/27(日) 20:22:33.62 ID:RTNKd3te.net Excelマクロ禁止してきた企業はPython機能も禁止しそう Rを社員が使うケースなんてのはもうレア度SSRなんだろうね
547 :デフォルトの名無しさん :2023/08/28(月) 13:50:39.79 ID:62AYCckx.net Rで学ぶなんとか分析とかいう本いっぱい出ているし、結構個人でやる気のあるやつは覚えるんじゃね? R人口増えている印象。
548 :デフォルトの名無しさん :2023/08/28(月) 13:57:24.90 ID:3YABDYXJ.net 昨日の統数研のワークショップ見て、大学や企業によってはライブラリのインストールに制限あったりでデフォルトで解析できるのがRが多言語に置き換わらない理由の一つなのかもなと思った 今後も「選択と集中」続けるどころか懸賞金型推進するようだから商用に金払うのも辛くなるとこも出てきそうね
549 :デフォルトの名無しさん :2023/08/29(火) 18:08:36.20 ID:vrxlGHM5.net 数が増えてることと数が少ないこととは違う これ混同する人は結構多い
550 :デフォルトの名無しさん :2023/08/30(水) 15:28:57.25 ID:zHni/Vbc.net 当社比200% 元が少なかっただけやろ みたいな
551 :デフォルトの名無しさん :2023/09/01(金) 21:33:15.97 ID:T0/12uyc.net 自分は今の部署にいる間だけは統計解析するけど異動したらもう解析なんてしないからRのモチベは低いな 人事の巡り合わせでいつかまた今の部署に戻るかもしれないけど
552 :デフォルトの名無しさん :2023/09/02(土) 10:50:19.16 ID:aOHtbbKy.net 隙あらばどうでもいい自分語り
553 :デフォルトの名無しさん :2023/09/02(土) 14:49:02.94 ID:DQO4DB1k.net 過疎スレでその煽りは馬鹿じゃねえの
554 :デフォルトの名無しさん :2023/09/02(土) 15:24:55.18 ID:mCX3wjBN.net 本人だろ age てるのは
555 :デフォルトの名無しさん :2023/09/02(土) 15:27:52.78 ID:DQO4DB1k.net ageを最近知ったみたいに強調してる馬鹿ww
556 :デフォルトの名無しさん :2023/11/26(日) 13:47:18.77 ID:TX3Gb+56.net [プッシュアウト](https://en.wikipedia.org/wiki/Pushout_%28category_theory%29) について書いてみた。 [JSFiddle](https://jsfiddle.net/zLpqd9mj/show) 集合の圏でのプッシュアウトは [等価ジョイン](https://en.wikipedia.org/wiki/Join_%28SQL%29#Equi-join) の圏論的双対にあたる。
557 :デフォルトの名無しさん :2023/11/26(日) 19:19:27.89 ID:fOcIWwuE.net おーまんちょー!
558 :デフォルトの名無しさん :2023/12/02(土) 19:24:46.52 ID:UAUVJeJE.net 前回のおーまんちょーでは一部のコードで途中から行番号が表示されるようになっていた。 多分、JSFiddleのエディターで`tidy`というボタンを押してしまったからだと思う。 実は、`prettydoc::html_pretty`で行番号が表示されないのを直したいと思っていた。 しかし、どこから手を付けたら良いかわからなかった。それが、ハプニングのおかげで 手の入れ場所がわかった。多分、HTMLとしては不整合な状況になっているが、 意図した通りに表示されるようになった。 [ありがとう、おーまんちょー](https://jsfiddle.net/105nohbq/show)
559 :デフォルトの名無しさん :2023/12/15(金) 00:55:03.28 ID:KmwBi9fF.net group_by()はmap()と組み合わせて使えないんだね
560 :デフォルトの名無しさん :2023/12/17(日) 12:11:13.68 ID:j39jK9SN.net 一般的な意味では、そんなことないと思うよ。 状況によってはgroup_byとmapを組み合わせると上手く行くことがあると思う。 ぐるぐる図のくだりでグダグダなところがあったので、 [修正した](https://jsfiddle.net/6z7u3d09/show) 。 アップした後にタイポを見つけたが、覆水盆に返らず。
561 :デフォルトの名無しさん :2023/12/17(日) 23:02:11.11 ID:/RmbQ2uq.net 多変数の時系列データをクラスタリングするpackageをご存知であれば教えていただけますか…?
562 :デフォルトの名無しさん :2023/12/18(月) 00:40:20.74 ID:+7hNKB64.net 知らない。 人がいれば、意味のない返事はしない方が良いかもしれないが、過疎だからね。
563 :デフォルトの名無しさん :2023/12/18(月) 23:51:29.23 ID:t5S7JJTy.net あなたは地球上で何日過ごしてますか? という問いに答えるRのスクリプト 干支と誕生日(月日)から今日が生まれて何日めか計算 eto=("ひつじ") tag="10-17" Eto=c("子(ね=ねずみ)","丑(うし)","寅(とら)","卯(う=うさぎ)","辰(たつ=龍(りゅう))","巳(み=へび)","午(うま)","未(ひつじ)","申(さる)","酉(とり=にわとり)","戌(いぬ)","亥(い=いのしし)") # Eto i=grep(eto,Eto) this_year=as.numeric(strsplit(as.character(Sys.Date()),'-')[[1]][1]) j=this_year%%12 - 3 age=12*(0:9) + j-i age=age[18<=age][1:5] age AD=paste0(this_year-age,"-",tag) days=\(x) as.numeric(Sys.Date() - as.Date(x)) rbind(age,days=sapply(AD,days)) あってますか?
564 :デフォルトの名無しさん :2023/12/19(火) 00:23:50.21 ID:jHCQnODd.net [Eto'o](https://en.wikipedia.org/wiki/Samuel_Eto%27o) はもう引退しました。
565 :デフォルトの名無しさん :2023/12/19(火) 00:58:14.13 ID:jHCQnODd.net マジで聞いているんなら、テストツールの使い方を覚えた方が建設的だと思う。 個人的には、Haskellからの流れで [quickcheck](https://github.com/RevolutionAnalytics/quickcheck) しか経験したことがないが、他にもあると思う。 コードが合っているかどうかわからないが、パット見問題なさそうに見える。 問題があったとしても、デバッグで十分対応できるように見える。 [リーナスの法則](https://en.wikipedia.org/wiki/Linus%27s_law): あたなが十分な暇人ならばバグはいずれ塞がれる。
566 :デフォルトの名無しさん :2023/12/19(火) 08:05:39.46 ID:5FW9R46b.net >>565 サンクス
567 :デフォルトの名無しさん :2023/12/20(水) 23:21:30.67 ID:H48HUSxu.net ChatGPTはなんていい奴なんだろう。 クソ野郎: I'd like to test the following code: ``` r 拝借 ``` * The code is written in the programming language R. * "子", "丑", ..., are the Chinese / Japanese zodiac called Eto in Japanese. This code have to calculate the age for given birth date in Eto, e.g. `eto = "ひつじ", tag = date = "10-17"`. Are there any advice to test this code? ChatGPT: Certainly! To test the provided R code, you can follow these steps: 1. Understand the Code: * Make sure you understand the logic of the code and how it calculates age based on the Eto and birthdate information. 1. Run the Code: * Copy and paste the code into an R script or R console. * Ensure that there are no syntax errors or issues when running the code. 1. Test Cases: * Define several test cases with different combinations of Eto, birthdate (tag), and current date. * For example, you can use different values for eto and tag, and verify the calculated age against your expectations. 1. Expected Results: * Manually calculate the expected age for each test case based on the provided Eto information and current date. * Compare the manually calculated age with the age calculated by the R code. 1. Edge Cases: * Test the code with edge cases, such as birthdates close to the boundary of age ranges, to ensure the code handles them correctly.
568 :デフォルトの名無しさん :2023/12/21(木) 22:26:55.69 ID:Jt1+wTI1.net 出禁になった。書けるかな? てなわけで、ちゃっとじーぴーてーの残りの部分は割愛する。 意地悪クソ野郎と親切じーぴーてーにも共通することろがあって、 最後の締めはやっぱりリーナスの法則になる。言い方が全然違うけど。 親切じーぴーてーが例に挙げたテストコードがテストの基本形になると思う。 くいっくちぇっくのようなテストツールでは、テストケースをランダムに発生させるが、 そうしたテストツールが使えない場合も多々ある。テストツールが使えない場合は、 親切じーぴーてーが示したようなベタな方法で行くしかない。
569 :デフォルトの名無しさん :2023/12/21(木) 22:41:24.08 ID:6SaY/e5W.net >>568 書き込めるかどうか判らぬままに 黙々とその低能感溢れる文章を書いている姿を想像すると泣けてくる 書き込めてよかったな
570 :デフォルトの名無しさん :2023/12/22(金) 00:02:15.06 ID://WOG+3q.net 親切じーぴーてーとの会話を見返すと、関数を細分化して、(ナウ、干支、月日) という三つ組を引数とする関数を作るのもありかな?という気がしてきた。 このように関数を細分化すると、テストケースが作りやすくなる。
571 :デフォルトの名無しさん :2023/12/22(金) 15:14:15.66 ID:BVAe/0CV.net かけるかな
572 :デフォルトの名無しさん :2024/01/04(木) 21:13:27.82 ID:r+ggAGcN.net クラスタリングとか次元削減に関する教科書的な本ってありますか?
573 :デフォルトの名無しさん :2024/01/05(金) 00:08:11.56 ID:Cbq0Hg0X.net かけるかな 統計の人でも機械学習の人でもないので、返事を書くのは心苦しいものがあるが、 過疎なのでしょうがない。統計処理と機械学習の区別がつかないぐらいの素人だよ。 ありきたりだけど: * [朱鷺の杜Wiki](http://ibisforest.org/index.php?FrontPage) グーグルとアヒルで検索してみたけど、この検索については英語の方が情報が取りやすいと思った。 英語でも日本語でも本屋の広告が多くなるが、英語の方が俺が推薦図書はこれだ! みたいなのが多いような気がした。検索で見つけた本だけど非売品と商品の両方がある。 * [Modern Dimension Reduction](https://arxiv.org/abs/2103.06885) * [Modern Dimension Reduction](https://www.cambridge.org/core/elements/abs/modern-dimension-reduction/D1506D1D7D51CC4EF375E4633D54F377) このようなケースでは立ち読みしてから買うこともできる。時々、非売品と商品の 両方が用意されていることがあるので、注意した方が良いかもしれない。 殊、次元削減で言えば、線形代数みないなもので、ありとあらゆる場所で使われるので、 俺の次元削減にジャストフィットするものを探すのは難しいかもしれない。 ちなみに、専門的には、学校の教室で研究会を開くのが統計で、リゾート地で 国際会議を開くのが機械学習らしい。
574 :デフォルトの名無しさん :2024/05/02(木) 14:41:31.88 ID:9naKJa9o.net 統計解析向けのプログラミング言語「R」の実装に欠陥、任意コード実行のおそれ https://forest.watch.impress.co.jp/docs/news/1588724.html
202 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★
本文 スレッドタイトル 投稿者