2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

統計解析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
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★