質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

Q&A

0回答

1289閲覧

【R】glmオブジェクトのようなリストを参照できる関数を定義したい

velonica74

総合スコア11

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

0グッド

0クリップ

投稿2021/12/21 04:59

編集2021/12/21 06:30

R言語にて、glmのようなオブジェクトを返せるような関数を定義したいと考えています。たとえば、

R

1> x <- c(4,5,17,17,19,19,29,41,45,47,49,54,56,58,70,76,88,88,93,97) 2> y <- c(0,0,0,0,0,0,1,1,1,0,0,1,1,0,1,1,1,1,1,1) 3> r <- glm(y ~ x, family=binomial(link="logit")) 4> r 5 6Call: glm(formula = y ~ x, family = binomial(link = "logit")) 7 8Coefficients: 9(Intercept) x 10 -3.56668 0.08319 11 12Degrees of Freedom: 19 Total (i.e. Null); 18 Residual 13Null Deviance: 27.53 14Residual Deviance: 15.19 AIC: 19.19

glmオブジェクトの入ったrを参照するだけだと上記の結果が得られますが、

R

1> str(r) 2List of 30 3 $ coefficients : Named num [1:2] -3.5667 0.0832 4 ..- attr(*, "names")= chr [1:2] "(Intercept)" "x" 5 $ residuals : Named num [1:20] -1.04 -1.04 -1.12 -1.12 -1.14 ... 6 ..- attr(*, "names")= chr [1:20] "1" "2" "3" "4" ... 7 $ fitted.values : Named num [1:20] 0.0379 0.0411 0.1041 0.1041 0.1207 ... 8 ..- attr(*, "names")= chr [1:20] "1" "2" "3" "4" ... 9 $ effects : Named num [1:20] -0.11 2.335 -0.27 -0.27 -0.298 ... 10 ..- attr(*, "names")= chr [1:20] "(Intercept)" "x" "" "" ... 11 $ R : num [1:2, 1:2] -1.55 0 -67.84 28.07 12 ..- attr(*, "dimnames")=List of 2 13 .. ..$ : chr [1:2] "(Intercept)" "x" 14 .. ..$ : chr [1:2] "(Intercept)" "x" 15 $ rank : int 2 16 $ qr :List of 5 17 ..$ qr : num [1:20, 1:2] -1.551 0.128 0.197 0.197 0.21 ... 18 .. ..- attr(*, "dimnames")=List of 2 19 .. .. ..$ : chr [1:20] "1" "2" "3" "4" ... 20 .. .. ..$ : chr [1:2] "(Intercept)" "x" 21 ..$ rank : int 2 22 ..$ qraux: num [1:2] 1.12 1.24 23 ..$ pivot: int [1:2] 1 2 24 ..$ tol : num 1e-11 25 ..- attr(*, "class")= chr "qr" 26 27・・・・・・・・・・・ 28 29 $ method : chr "glm.fit" 30 $ contrasts : NULL 31 $ xlevels : Named list() 32 - attr(*, "class")= chr [1:2] "glm" "lm"

rは各種値を含むリストになっており、r$coefficients などとすることで値を参照できることがわかります。
このように、rでの出力とは別に、値そのものを格納しておくにはどのようにしたらよいでしょうか。

以下のコードは実装したいもののイメージのサンプルとなります。

R

1foo <- function(bar) { 2 cat('test') 3 x <- bar 4 y <- list(c(1:9)) 5} 6 7> baz <- foo(0) 8> baz$x

GLMのコード を読み解けるほど堪能ではないため、お力添えいただけますと幸いです。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2021/12/21 05:17

「値そのもの」というのは summary(r)$coef の実行結果の様なものでしょうか?
velonica74

2021/12/21 05:38

はい、仰る通りです。 たとえば 'srtr(r)' の出力の7つ目の r$rank は、 ’r’ 実行時の出力として存在していませんが、値の実体はリストに格納されており、「値そのもの」はここでいう rank を意図しておりました。 紛らわしい表現で申し訳ありません。
melian

2021/12/21 05:57

了解です。それでは、例えば rank <- r$rank などとしておくと良い様な気もしますが、そういう事ではない?
velonica74

2021/12/21 06:22

はい>< glmの値の格納ロジックを知りたい、ということになります;; サンプルコードを追加したのですが、 > baz <- foo(0) だと'test'が出力されますが > baz$x で値を参照できたらいいな、というイメージです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問