COLOR(green){SIZE(20){初心者のための R および RjpWiki に関する質問コーナー}} 

COLOR(red){SIZE(16){以下の 4 つの「●項目」のどれかをクリック!!}}~
----

COLOR(blue){● [[新規投稿欄:>#sinki]]} --- その前に,「[[投稿における注意事項]]」を読んでから!&br;
COLOR(blue){● [[このページの目次>#mokuji]]} --- 質問への回答・コメントの参照&br;
COLOR(blue){● [[最新のスレッド>#saisin]]} --- 最も最近に書き込まれた「親」記事(最新のコメントが付いた記事ではありません)&br;
COLOR(blue){● [[Q&A (初級者コース) 過去の目次]]} --- 今までの 15 個の書庫の参照&br;

----

&aname(mokuji);COLOR(green){●● 目次 ●●}

参照は,個々の項目をクリック(質問への回答・コメントの参照も,個々の項目をクリック)~
#contents

----
&aname(sinki);まずは,「[[投稿における注意事項]]」を読んでください。~
これに従わない場合には回答が得られにくい場合があります。

COLOR(green){●● 新規投稿 ●●}
&aname(saisin); 

#article
**miceで補完した欠損値を統合した後のデータはわかるのでしょうか? [#j6d96753]
>[[trauma]] (2017-08-24 (木) 11:51:24)~
~
欠損値の補完をmultiple impution解析をmiceでしようとしているのですが、補完した欠損値のデータを統合したあとのデータはわかるのでしょうか?~
それぞれのデータセットはわかるのですが、統合したあとのデータがわからないと、欠損値を補完したあとの解析ができないのですが。~
以下のように行っているのですが、可能でしょうか?~
どうかご教示お願い申しあげます。~
~
library(mice)~
~
#欠損値を補完したデータセットの作成~
imp_data<-mice(dat1,m = 5)~
~
#分析~
fit <-with(imp_data,lm(reading ~ grammar + vocab))~
~
#分析結果の統合~
summary(pool(fit))~

//

#comment

**rmsの欠損値の補完でデータを減らすとエラーがでます。 [#lc4e5a31]
>[[trauma]] (2017-08-22 (火) 23:35:41)~
~
rmsでデータの欠損値の補完を行っています。元データでは結果がでるのですが、サブグループ解析でデータ数を減らすとエラーメッセージがでます。内容がまったくわからない状態です。どのように対応すれば解析できるでしょうか。~
以下がエラーメッセージです。どうかご教示いただけたら幸いです。
 #################################################################################################################
 > # Conducting multiple imputation, without this, PS won't be created unless all variables have non-missing data
 > # Imputing missing data 
 > #################################################################################################################
 > 
 > areg = aregImpute(ef ~ age+gender+ transporter + sbp + hr + gcs + btf +tae+intubation +hystory, data=AIS, n.impute=5, x=TRUE)
 Iteration 1 
  `[<-`(`*tmp*`, , (j + 1):(j + m), value = w) でエラー: 
    添え字が許される範囲外です 
  追加情報:  警告メッセージ: 
 1:  rcspline.eval(z, knots = parms, nk = nk, inclx = TRUE) で: 
   could not obtain 3 interior knots with default algorithm.
  Used alternate algorithm to obtain 3 knots
 2:  rcspline.eval(z, knots = parms, nk = nk, inclx = TRUE) で: 
   could not obtain 3 interior knots with default algorithm.
  Used alternate algorithm to obtain 4 knots
 > fit.mi <- fit.mult.impute(ef ~ age+gender+ transporter + sbp + hr + gcs + btf +tae+intubation +hystory, lrm, areg, data=AIS)

//
- PS won't be created unless all variables have non-missing data というのが,エラーの本質を言っています。「サブグループ解析でデータ数を減らす」ことによって,全てが欠損値となる変数が出てくるんでしょう。&br;「どのように対応すれば」といわれても,データが少ないのが原因なので,もっとデータを集める。あるいは,その原因になる変数を使わない。それができないなら,分析はあきらめる。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-08-23 (水) 04:22:45};
- 早速の返事ありがとうございます。サブグループのデータにはすべてが欠損値になる変数はないのですが・・。1200例が400例ぐらいには減っているのですが。他に原因があるのでしょうか? -- [[trauma]] &new{2017-08-23 (水) 13:52:44};
- age+gender+ transporter + sbp + hr + gcs + btf +tae+intubation +hystory のうち,1個ずつ減らしていって,問題のある変数を絞ってみればいかが? -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-08-23 (水) 15:04:38};

#comment

**library()ができません [#afc86ba8]
>[[初学者A]] (2017-07-28 (金) 14:28:10)~
~
PCが非常に苦手な初学者です。~
研究の関係でRで統計を行う必要があるのですがまったくすすめることができません。お力添え頂けますと幸いです。~
~
library()で、パッケージの確認をしようとすると以下のような文章がでてきます。~
また、実施ごとに表示されるファイル名が毎回異なるのも理由はわかりません、、、
 > library()
  file(con, "w") でエラー:  コネクションを開くことができません 
  追加情報:  警告メッセージ: 
  file(con, "w") で: 
    ファイル 'C:\Users\夏海\AppData\Local\Temp\Rtmp06WNzx\RlibraryIQR357834512f1f' を開くことができません: No such file or directory 
 
 > library()
  file(con, "w") でエラー:  コネクションを開くことができません 
  追加情報:  警告メッセージ: 
  file(con, "w") で: 
    ファイル 'C:\Users\夏海\AppData\Local\Temp\Rtmp06WNzx\RlibraryIQR357839e71fab' を開くことができません: No such file or directory 
 
 > library(lib = .Library) 
  file(con, "w") でエラー:  コネクションを開くことができません 
  追加情報:  警告メッセージ: 
  file(con, "w") で: 
    ファイル 'C:\Users\夏海\AppData\Local\Temp\Rtmp06WNzx\RlibraryIQR35782a1548c7' を開くことができません: No such file or dire
ディレクトリは
 > getwd()
 [1] "C:/R"
libraryの指定ファイルは以下の通りでした。
 > .libPaths()
 [1] "C:/R/R-3.4.1/library"
Rではなく、エクスプロ―ラーから上記の"C:/R/R-3.4.1/library"を確認するとbase等のパッケージが確認できるので、インストール自体はできていて、libraryにちゃんと入っていると思うのでWorkしない理由が分からないです。。。~
ただ、何回かRのインストールとアンインストールを繰り返してしまい不要なファイル等がどこかにできてしまっているかもしれません。。。(確認できる範囲では全て削除していますが、、)~
~
どうか、ご教示いただければ幸いです。~
~
使用環境は以下の通りです。
 R version 3.4.1 (2017-06-30)
 Platform: x86_64-w64-mingw32/x64 (64-bit)
 Running under: Windows 10 x64 (build 15063)
 
 Matrix products: default
 
 locale:
 [1] LC_COLLATE=Japanese_Japan.932  LC_CTYPE=Japanese_Japan.932    LC_MONETARY=Japanese_Japan.932 LC_NUMERIC=C                  
 [5] LC_TIME=Japanese_Japan.932    
 
 attached base packages:
 [1] stats     graphics  grDevices utils     datasets  methods   base     
 
 loaded via a namespace (and not attached):
 [1] compiler_3.4.1

//
- とりあえずは library(lib.loc=.libPaths()) で一覧は出ると思います。日本語のユーザ名だとRStudioが動かなかったりするので、いろいろと不便なことになると思います。半角英数の別アカウントを作成して実験して見て問題が解消するなら、日本語ユーザ名が原因です。 --  &new{2017-07-30 (日) 00:12:32};

#comment

**Name属性付きのベクトルからNameと値の一覧を得たい [#vacaa017]
>[[ヘッツァー]] (2017-07-28 (金) 05:10:31)~
~
数値ベクトル(100,300,150,200,400)があり夫々の値に対してapple,orange,grape,mango,pineappleと言うnames属性が付いているとします。~
~
この時、~
~
apple     100 ~
orange    300~
grape     150~
mango     200~
pineapple 400~
~
のように整列したデータフレームを作成するにはどのようにしたら良いでしょうか?~
~
よろしくお願いいたします。~

//
- names(数値ベクトル)でnames属性をベクトル化して、数値ベクトルと合わせてデータフレームにするだけ。df <- data.frame(colname1 = names(数値ベクトル), colname2 = 数値ベクトル) 必要なら rownames(df) <- NULL もあわせてどうぞ。 -- [[通りすがり]] &new{2017-07-28 (金) 11:28:41};

#comment

**heatmapのサイズ調整について [#ta782307]
>[[kuro]] (2017-07-26 (水) 11:58:24)~
~
heatmap関数を用いてヒートマップを作成しているのですが、列のサイズが大きいデータのため非常に縦長(1:3以上)のヒートマップを作成したいと思っています。~
色々試してみましたが、余白ばかりが長くなったり、文字が潰れたりして上手く行きません。~
heatmapでの設定方法か、もしくは他の関数があれば教えて下さい。~
コマンドは以下を使用しています。~
 heatmap(
  as.matrix(data),  
  Rowv = TRUE, 
  Colv = NA, 
  distfun = dist,
  hclustfun = hclust,
  col = heat.colors(255),
  margin=c(4,4)

//
- ClassDiscoveryパッケージのaspectHeatmap()を試してみてはどうでしょう --  &new{2017-07-30 (日) 00:35:24};

#comment

**決定木の作図 [#jabb9681]
>[[bbb]] (2017-07-26 (水) 11:45:30)~
~
caretパッケージで決定木(method=rpart)を行っています。~
作図するために、rpart.plotを用いて行っていますが、上手くいきません。~
①各ノードにサンプル数Nとその内訳(1の数と0の数)~
②各ノードにそれぞれの(1の数/1と0の総数)、つまり1の割合~
を図示したいのですが、どなたかお力を貸していただけないでしょうか。~
イメージとしては~
http://cdn-ak.f.st-hatena.com/images/fotolife/t/tomoshige_n/20140720/20140720163316.jpg~
です。何卒よろしくお願いいたします。~

//

#comment

**有効数字の設定 [#kdaf625d]
>[[aice]] (2017-07-23 (日) 20:13:38)~
~
使用するオブジェクト・変数の数が多かったり、プログラムが複雑な場合、実行する前の初期設定や関数等で有効数字を一括に設定する方法はないでしょうか。

//
- 質問の意味がよくわかりませんが,options(digits=桁数) でことがすむのかな?
 > pi
 [1] 3.141593
 > options(digits=2)
 > pi
 [1] 3.1
 > options(digits=15)
 > pi
 [1] 3.14159265358979
 > sqrt(3)
 [1] 1.73205080756888
ということ? -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-07-23 (日) 21:40:50};

#comment

**lower.tail [#q41a8c31]
>[[y931]] (2017-07-21 (金) 19:02:32)~
~
http://www.okadajp.org/RWiki/?R%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E7%A2%BA%E7%8E%87%E5%88%86%E5%B8%83~
~
Rの確率分布システム~
R はさまざまな確率分布に関する関数を持つ。~
~
その他のオプションパラメータ~
lower.tailの既定値は FALSE	~
とありますが~
~
Rのhelpでは~
lower.tail	~
logical; if TRUE (default), probabilities are P[X ≤ x] otherwise, P[X > x].~
~
とあり、既定値はTRUEになっていますが・・・~
どう考えたらよいでしょうか?~
qnorm ( 0.975 )~
=1.959964~
から考えてもhelpが正しいですよね?~

//
- 件のページが間違えているだけ(修正しといた) -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-07-21 (金) 22:13:29};
- 早速お返事いただきありがとうございました。 -- [[y931]] &new{2017-07-21 (金) 23:29:42};

#comment

**複数行のデータを縦1列に並び替える [#rc9994c5]
>[[しょう]] (2017-07-17 (月) 16:16:23)~
~
お世話になります。~
mac OS Sierra 10.12.5で、R 3.4.1を使用しております。~
~
ある測定器から、5msecごとに出力される測定データを、Rを用いて折れ線グラフにしようとしております。~
測定データは、csv形式で作成されるのですが、1行につき8個ずつ(8列)データが作成されていきます。~
~
つまり、測定順に~
1行目  1    2  3   4   5  6   7   8  ~
2行目 9  10 11 12 13 14 15  16~
3行目 17 18 ...~
~
こういった具合です。~
~
今まではExcelでmod関数などを用いて、縦1列に並び変えてからRに持ち込んで描画していたのですが、~
測定時間が数時間になるとエクセルでの手動処理にも時間がかかるようになり、~
縦一列に並び変えるところからRで処理できれば、と思っております。~
~
書籍やネットでも検索をしてみましたが、ちょうど当たるものが見当たりません。~
行を指定して要素を取り出してみました( data [2, ]など) が、列名が一緒にくっついてきてしまい、~
行き詰まっております。~
~
どなたかご存知の方らおらましたら、ご教示いただけますと幸いです。~
何とぞ宜しくお願い申し上げます。~

//
- read.table なりで読んで,t で転置して,c でベクトルにすればよい。&br;x = c(t(read.table("test.dat")))&br;一番簡単には,&br;x = scan("test.dat") -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-07-17 (月) 17:46:49};
- 河童の屁は,河童にあらず,屁である。さん、本当にありがとうございます。おかげさまでなんとかなりそうです。 -- [[しょう]] &new{2017-07-17 (月) 21:01:40};

#comment

**RStudioでクロス表の表示エラー [#aaa9f0a2]
>[[y931]] (2017-07-13 (木) 20:44:44)~
~
RStudio Version 1.0.136~
R Version 3.3.3~
~
RStudio で次のようなデータフレーム作成した場合~
~
A <- c ( 12, 10, 13 )~
B <- c ( 20, 12, 16 )~
C <- c ( 20, 15, 19 )~
y <-  data.frame (A,B,C)~
~
グラフのタブが表れて、エクセルのようなクロス表が表示されていました.~
しかし最近、その表内の行(1 , 2 , 3)と列(A , B , C)のラベルが表示されず、~
ラベルセルが空白になるエラーが発生しています.~
~
どなたか対処方法をご存知の方はお知らせください.~
使用しているOSは、windows10 home,  64bit です.

//
- Rstudioのサポートページ(https://support.rstudio.com/hc/en-us)に質問して解決しました.バージョンを更新 (v1.0.153)することで不具合が解消されました. -- [[y931]] &new{2017-07-20 (木) 11:12:00};

#comment

**文字列の置換について [#z49a0b22]
>[[yasyas]] (2017-07-13 (木) 18:23:00)~
~
文字列を対応する値に変換したいと思っています。~
~
例えば以下のような対応表があったとして、~
dat <- data.frame(tar = letters[1:10], rep=10:1)~
つまり"a"なら10, "b"なら9…という感じの対応表です。~
~
置換したい文字列ベクトルが以下のように与えられているとします。~
z <- c("c", "a", "b")~
~
これを8,10,9という風な数字ベクトルに変換したいのですが、~
for文を使わずにうまく変換する方法はありますでしょうか。~
~
z <- dat[["rep"]][which(dat[["tar"]]==z)]~
というようにやってみたのですが、うまくいかず。~

//
- unname(sapply(z, function(x) dat$rep[which(x == dat$tar)])) とか -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-07-13 (木) 18:43:13};
- 河童の屁は,河童にあらず,屁である。さん、素早い回答ありがとうございます!sapplyを使うのですね。まだ理解が追い付いていませんが、勉強します! -- [[yasyas]] &new{2017-07-13 (木) 19:38:46};

#comment

**lmerTestのエラー [#n6c23d94]
>[[ahagiwar]] (2017-06-30 (金) 13:35:08)~
~
混合効果モデルの解析を行っています。lmerTestで混合効果モデルを解析したのですが下記の様なエラーメッセージが出て固定効果のp値を計算してくれません。ウェブで調べたのですが良くわかりませんでした。どなたか教えていただければ幸いです。
 > m2041 <- lmerTest::lmer(STRESS ~ 1 | ID, data=df2)
 > summary(m2041)
 summary from lme4 is returned
 some computational error has occurred in lmerTest
 Linear mixed model fit by REML ['lmerMod']
 Formula: STRESS ~ 1 | ID
    Data: df2
 
 REML criterion at convergence: 1672.2
 
 Scaled residuals: 
     Min      1Q  Median      3Q     Max 
 -2.3088 -0.5454 -0.0319  0.6239  3.4587 
 
 Random effects:
  Groups   Name        Variance Std.Dev.
  ID       (Intercept) 43.57    6.601   
  Residual             76.60    8.752   
 Number of obs: 225, groups:  ID, 45
 
 Fixed effects:
             Estimate Std. Error t value
 (Intercept)   41.524      1.144    36.3

//
- お恐れながら。モデルを構築するだけの独立変数が不足しているのではないかなあ。などと思ったりします(独立変数は ID の 1 個だけですか?わけわからんですが)。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-06-30 (金) 20:50:46};
- このデータは、なかにしや出版の「マルチレベルモデル入門」のサンプルデータです。本ではp値が記載されているのですが、lmerTestではこれが出来ず、さまよっておりました。頂いたご意見からもしやと思い違うデータで行ったならば問題なく計算できました。サンプル数によりlmerTestがp値を計算できなかったのでしょう。海外でもこの現象に困っている方がいるようで、大変貴重なご意見と思いました。ありがとうございます。 -- [[ahagiwar]] &new{2017-07-01 (土) 13:50:14};
- 「河童の屁は,河童にあらず,屁である」さんへ。アドヴァイスありがとうございました。これは、上述した教科書のヌル混合モデルのRコードです。lmerですとエラーメッセージなく計算されますが、lmerTestはエラーメッセージが出て、lme4のlmerで計算されます。しかし、これに独立変数を加えると(例えばTIME)、lmerTestは問題無く動きました。また変量効果に変数を付け加えても問題無かったです。lmerTestでは、null modelのp値は計算してくれないようです。そもそも原則的にnull modelでp値は必要ないですし、もしも必要ならば、計算すれば良いのでこれにてこの問題は解決しました。暇な時にlmerTestのアルゴリズムを調べてみようかと思っております。助かりました。ありがとうございます。 -- [[ahagiwar]] &new{2017-07-03 (月) 15:58:56};

#comment

**Rの記号変換ってどうなってるんだ? [#u474e173]
>[[ななな]] (2017-06-22 (木) 23:11:43)~
~
Rって 1-metylhistidine っていう文字があったときに,X1.metylhistidine って勝手に変更されるのですが,どのように対処したらいいんでしょうか?~

//
- ファイルの読み込みの時のオプションとしてencoding = SHIFT-JISにしたらいいのでは? -- k? 2017-06-22 (木) 16:03:36;
- 質問場所が不適切なので移動した&br;read.table 関数などのデータフレームの変数名のことではないの?check.names = FALSE にすれば? -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-06-22 (木) 23:15:12};
test0622.dat というファイル名で以下を作る
 1-metylhistidine variable1
 1 2
 3 4
 5 6
これを,指定した変数名そのままで読ませる
 > x <- read.table("test0622.dat", header=TRUE, check.names=FALSE)
 > x
   1-metylhistidine variable1
 1                1         2
 2                3         4
 3                5         6
でも,使い勝手は悪いなあ
 > x$"1-metylhistidine"
 [1] 1 3 5
使いづらいこと,この上ない。そんなに長い名前付ける必要ないでしょ。寿限無かよ。藁
- あえて全角文字を使うことにより、変数名を数字から始めたり、マイナス記号や全角空白も利用可能です。Rに慣れていない学生が使うときには、取り扱いの不便さよりも分かりやすさを優先させることもアリだと思います。 --  &new{2017-06-26 (月) 16:10:44};
- なしだと思います(^_^)
 最初の変数 <- 1
 二番目の変数 <-2 
 合計 <- 最初の変数 + 二番目の変数
 cat(最初の変数, "+", 二番目の変数, "=", 合計)
ふむ。
 x <-1
 y <- 2
 sum <- x + y
 cat(x, "+", y, "=", sum)
わかりやすか?(どっちもどっちだろ。入力させて実感するなら,後者かな)
 一番目の変数は1とする <- 1
 二番目の変数は2とする <- 2
 三番目の変数は3とする <- 3
 平均値は <- (一番目の変数は1とする+二番目の変数は2とする+三番目の変数は3とする)/3
 print(平均値は)
まあ,極端だけどね。ふつう,極端なことはしないよね。~
これのどこがわかりやすいというのだろう?
 階乗の計算をする関数 <- function(数値) {
	if (数値 == 1) {
 		1
 	} else {
 		数値*階乗の計算をする関数(数値-1)
 	}
 }
 階乗の計算をする関数(3)
 階乗の計算をする関数(5)
文字列の全置換だけの問題だ。
 fac <- function(n) {
 	if (n == 1) {
 		1
 	} else {
 		n*fac(n-1)
 	}
 }
 fac(3)
 fac(5)
どこが違う?~
昔々,「日本語ベーシック」というのがあった藁。変数名に日本語が使える BASIC 言語(for とか continue などのキーワードも日本語可だったかな)。驚き!~
プログラムが容易になった?当然そんなことは,なかった。残念。~
「小学生には...」~
小学生の適応能力をなめるなよ~
ウイルスアプリだって書けるんだから -- [[ ]] &new{2017-06-28 (水) 22:30:43};
- 日本語の変数名の是非ですが、分野によると思います。データの読み込みの際に、分かりやすい日本語の変数名(調査票の項目名など)で整理した表計算のシートをそのまま使って記述統計の結果や回帰モデルの結果が表示される方が、初学の学生にとって直感的に分かりやすい。ASCIIの変数名と本来の日本語変数名の対応表をいちいち参照しながら、結果を見ていくのが大変な分野もあるのです。関数を書くなど複雑なことをするなら、記述しやすいASCII文字にした方がよいのは当然ですが。また、変数名を数値から始めてはいけないというルールが許容されているのも、文頭のアラビア数字をスペルアウトしなければならない欧文圏の文化に由来するもので、日本の文化には合わないと考えます。 --  &new{2017-06-29 (木) 12:09:34};
- 「階乗の計算をする関数」はすごくわかりやすいのですが……。 --  &new{2017-06-29 (木) 14:32:20};

#comment

**prcomp (主成分分析のPCの数について)  [#fae0e174]
>[[名無し]] (2017-06-21 (水) 01:15:13)~
~
Rで下記のようなデータを用いて主成分分析を行いました.
 [ある2グループのマウスの274代謝物の標準化を行ったデータ]
 ----------------------------------------------------------------
 metabolite   A1   A2   A3   B1   B2   B3
 Glycolate     2    2    3    4    4    5
 .
 .
 .
 .
 (274代謝物質)
 ----------------------------------------------------------------
 
 result <- prcomp(data,scale = F)
 print(summary(result))
 
 Importance of components:
                           PC1    PC2    PC3    PC4    PC5     PC6     PC7
 Standard deviation     1.6199 1.1883 1.0904 0.9896 0.9271 0.80668 0.74706
 Proportion of Variance 0.2846 0.1531 0.1289 0.1062 0.0932 0.07056 0.06052
 Cumulative Proportion  0.2846 0.4377 0.5666 0.6728 0.7660 0.83658 0.89710
  
                           PC8     PC9      PC10
 Standard deviation     0.70142 0.67599 3.233e-08
 Proportion of Variance 0.05335 0.04955 0.000e+00
 Cumulative Proportion  0.95045 1.00000 1.000e+00
ここで自分が疑問に感じたのが,代謝物質が274物質あるにもかかわらず,PCの数が10個しか存在しないのは,PC10の段階で累積寄与率が限りなく1に近づいたためにPC11以降が表示されなくなったのでしょうか?~
代謝物が274個もあるのに,PCが10個しか表示されないのは,代謝物の濃度が限りなく低くいものが多く存在し,それらはPC11以降の主成分にほとんど影響をしていないと解釈してもいいのでしょうか?~

//
- 質問をする場所と質問の仕方がテンでダメだったが,まあ,しょうがない。今後はちゃんとやるように。&br;分析に使用したデータは274行×6列のデータではないのではないですか?列数は10ではないか?&br;一般に,n行m列のデータ行列を主成分分析すると理論的な主成分の数は,n と m の小さい方と同じになる。R では理論的な主成分の個数だけの解が表示される。そして,主成分の Standard deviation の二乗和は scale=TRUE を指定した場合には列数に等しくなる。iris の最初の4列(4変数)について主成分分析した結果を示しておこう。
 > result <- prcomp(iris[, 1:4], scale = TRUE) # 変数ごとに標準化して分析に使う
 > print(summary(result))
 Importance of components%s:
                           PC1    PC2     PC3     PC4 # 4 変数データなので,4 個の主成分が得られる
 Standard deviation     1.7084 0.9560 0.38309 0.14393
 Proportion of Variance 0.7296 0.2285 0.03669 0.00518
 Cumulative Proportion  0.7296 0.9581 0.99482 1.00000
 > sum(c(1.7084, 0.9560, 0.38309, 0.14393)^2) # Standard deviation を二乗して和をとると,丸めの誤差の範囲で 4 になる
 [1] 4.00004
ちなみに,あなたが挙げたデータは標準化を行ったデータとは思えず,にもかかわらず scale=FALSE を指定しての分析はおかしい。また,あなたは 274×10 のデータ行列ではなく,転置した 10×274 のデータ行列のほうを主成分分析したかったのかな?だとしても,主成分の個数は共に 10 ではあるが。
 > result <- prcomp(t(iris[, 1:4]), scale = TRUE) # 4 × 150 のデータ行列にするために転置する
 > print(summary(result))
 Importance of components%s:
                            PC1    PC2     PC3       PC4 # 主成分の個数は 4 と 150 の小さいほうの数になる
 Standard deviation     11.3362 4.5972 0.59728 1.448e-15
 Proportion of Variance  0.8567 0.1409 0.00238 0.000e+00
 Cumulative Proportion   0.8567 0.9976 1.00000 1.000e+00
 > sum(c(11.3362, 4.5972, 0.59728, 1.448e-15)^2) # Standard deviation の平方和は丸めの誤差の範囲で 150 になる(データ行列の列数は 150 なので)
 [1] 150.0004
分析例をまねするだけではなく,何をやりたいのかはっきりさせる必要がある。~
また,いずれにせよ「代謝物の濃度が限りなく低くいものが多く存在し,それらはPC11以降の主成分にほとんど影響をしていないと解釈」というのも,誤った解釈。代謝物の濃度が低いのと主成分が小さいのは関係ない。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-06-21 (水) 01:40:59};

#comment

**RExcelの使い方 [#k8b15a80]
>[[ろん]] (2017-06-08 (木) 01:34:55)~
~
お世話になります。~
RExcelを動かしたくてRインストールしてRExcel64Inst3.5.1_HomeAndStudentを落としたのですが、statconnDCOMが見つかりません。~
http://sunsite.univie.ac.at/rcom/~
このページがスタートだと思うのですが、ここからどう辿ればいいのでしょうか。~

//
- 画面をよく見て。ここじゃないの?Download&br;&ref(here2.png);&br;ただねえ,ダウンロードできても動くかどうかわからんよ。参照:http://www.okadajp.org/RWiki/?RExcel -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-06-08 (木) 07:53:30};
- 質問者です。それがリンクたどっても元に戻ってしまって、ファイルが見つからないのです。ご紹介のページにライセンスの言及がありますので、試してみます。 -- [[ろん]] &new{2017-06-08 (木) 09:26:09};
- 質問者です。それがリンクたどっても元に戻ってしまって、ファイルが見つからないのです。ご紹介のページにライセンスの言及がありますので、試してみます。 -- [[ろん]] &new{2017-06-08 (木) 10:15:36};

#comment

**2つの文字列の共通部分を抽出する [#sd078b6f]
>[[初心者]] (2017-06-04 (日) 22:58:57)~
~
文字列1と文字列2があったときに~
共通する最大長の文字列長を探し出す関数はあったりしますでしょうか?~
~
例えば~
str1 <- "abcd"~
str2 <- "xxbcyy"~
の場合~
共通する最大長の文字列"bc"を抽出したいです。~

//
- 心当たりがないので,関数を書いてみた。
 strLongest = function(s1, s2) {
     n1 = nchar(s1)
     maxLength = 0
     longestString = NULL
     for (i in 1:n1) {
         for (j in i:n1) {
             ps1 = substr(s1, i, j)
             nps1 = nchar(ps1)
             if (grepl(ps1, s2) && maxLength < nps1) {
                 maxLength = nps1
                 longestString = ps1
             }
         }
     }
     longestString
 }
 実行例
 > str1 <- "abcd"
 > str2 <- "xxbcyy"
 > strLongest(str1, str2)
 [1] "bc"
 > str1 = "djcejejifijcahdcefcdbefdgefhfijbdhaaihjfchidhfcdfi"
 > str2 = "gjfhfgbjegcbgadcbaefdeahdagfbaegadhciddefifcbhdhcj"
 > system.time(strLongest(str1, str2))
    ユーザ   システム       経過  
      0.017      0.000      0.017 
まあまあの実行速度だと思う? -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-06-05 (月) 11:04:48};
- 大変参考になります。ありがとうございました。 --  &new{2017-06-05 (月) 18:51:52};

#comment

**RODBCパッケージのエラーハンドリングについて [#hc9bd666]
>[[R初心者]] (2017-05-23 (火) 13:15:27)~
~
RODBCを使用して、SQL Server 2012からデータを取得をしているのですが、エラーが発生した場合のハンドリングがうまくできません。~
参考ページ([[リンク名:http://qiita.com/hotoku/items/c80bc43400681a7c8646]])に記載されているコード(下記)で、INSERTでキー重複が発生するようなSQLを実行させた場合でもキャッチされませんでした。
 library(RODBC)
 try.sql <- function(con.str, sql){
     tryCatch({
         con <- odbcDriverConnect(con.str)
         sqlQuery(con, sql)
     },
              error=function(e){
                  print(sprintf("Query failed:connection string=%s sql=%s", con.str, sql))
                  print(e)
              },
              finally=odbcCloseAll()
              )
 }
RODBCのリファレンスを見る限りですとsqlQueryの実行がエラーを挙げるような記載はなく、そもそも上記コードが動くのかが疑問です。~
ご存知の方いらっしゃいましたらご教示頂きたく、よろしくお願い致します。~
下記、sessioninfo()実行結果です~
 R version 3.3.3 (2017-03-06)
 Platform: x86_64-w64-mingw32/x64 (64-bit)
 Running under: Windows 7 x64 (build 7601) Service Pack 1
 
 locale:
 [1] LC_COLLATE=Japanese_Japan.932  LC_CTYPE=Japanese_Japan.932    LC_MONETARY=Japanese_Japan.932
 [4] LC_NUMERIC=C                   LC_TIME=Japanese_Japan.932    
 
 attached base packages:
 [1] stats     graphics  grDevices utils     datasets  methods   base     
 
 loaded via a namespace (and not attached):
 [1] RevoUtils_10.0.3 tools_3.3.3     
 RODBCバージョン:1.3.14

//
- 実行環境はわかりましたけど,この関数を呼ぶにはどの要にすればよいのかも書いてくれるとよいと思うのだけど?&br;この関数を使ったことがある人ならすぐにも回答はできると思うのだけど,そういう人はいないようだなあと...&br;だとすると,「R には若干自信があるけど,RODCB ははじめてだなあ」という人も回答できる可能性は 0 ではないと思うのだよね。&br;RODCB に詳しい人でも,この関数をどのように使ったら思うような結果が得られなかったのか,わかるわけないじゃないですか。&br;あなたが,この関数を,どのように使ったら,どのような(期待されない)結果が得られたのか,ちゃんと書くべきではないですか?(ここまで言わないとわからないなら,ここまで言ってもわからないのかな。残念。) -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-05-27 (土) 21:09:20};

#comment

**rollapply [#a3c306e1]
>[[R初心者]] (2017-05-22 (月) 23:47:46)~
~
rollapplyを使って、時系列データをローリングで重回帰して結果を出力したいのですが、うまく書けません。~
ran.csvには説明変数rate、growth、volと従属変数wgbi、bcaggre、em、hy、usaggre"が時系列で入っています。~
以下自分なりに書いてみたコードです。~
よろしくお願い致します。
 library(zoo)
 library(ggplot2)
 library(tseries)
 
 z.logrtn<-read.csv("rtn.csv")
 
 list<-c("wgbi", "bcaggre", "em", "hy", "usaggre")
 
 for(i in 1:length(list)) {
   beta<- rollapply(z.logrtn,
                     width=30,
                     FUN = function(z.logrtn){
                       t = lm(formula=list[i]~rate+growth+vol, data = as.data.frame(z.logrtn));
                       return(t$coef)
                       },
                     by.column=FALSE, align="right")
   if(i==1){
     res<-beta
     }
   else{
     res<-merge(beta, res)
     }
   }
こんなエラーが出ます。model.frame.default(formula = list[i] ~ rate + growth + vol,  でエラー:     変数 ('rate' に基づく) の長さが異なります~

//
- 「長さが違うよ」と言われているのだから,list[i] と rate, growth, vol の長さのチェックをするとよいでしょう。そうすれば list[i] の長さが 1 であることがわかって,ビックリするでしょう。&br;プログラムが動くようにしてほしいならば,"rtn.csv" を上のメニューから「添付」するとよいでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-05-23 (火) 08:17:31};
- ありがとうございます。rtn.csvをアップロードしてみました。何卒このプログラミング弱者にご伝授お願い致します。 -- [[R初心者]] &new{2017-05-23 (火) 19:12:45};
- エラーの出る原因は,前に書いたとおり。わかってもらえなかったようなので,もう一度。~
 formula=list[i]~rate+growth+vol
は,i=1 のときの場合,
 formula=wgbi~rate+growth+vol
とは違いますよ。list[i] は "wgbi"という「文字列」であり,wgbi という変数名(列名)とは違う。~
 temp = eval(parse(text=paste(list[i], "~ rate + growth + vol")))
 t = lm(formula = temp, data = as.data.frame(z.logrtn))
とすればエラーはなくなり,この部分はたぶんあなたの期待通り動く。~
しかし,全体として,あなたの期待通りのプログラムにはなっていないと思われる(目に見える結果が得られないのよね)。~
また,eval を使うのはあまりよい解決法ではなく,別のプログラムの書き方を採用するのが良いと思う。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-05-24 (水) 14:10:37};
- ありがとうございます。勉強します。 -- [[R初心者]] &new{2017-05-24 (水) 21:22:20};
- z.logrtn[,i]などと書けば列ベクトルに対して回帰してくれるようでした。精進します。 -- [[R初心者]] &new{2017-05-24 (水) 21:37:32};

#comment

**ひらがなをカタナカに置換する方法 [#s9a02524]
> (2017-04-30 (日) 10:01:26)~
~
お世話になります。~
~
文字列に格納されているひらがなをカタカナに一括で置換する方法はないでしょうか。~
~
例えば "ABCあいウエオ" を "ABCアイウエオ" に置換したいです。~
実際の文字列は長く、多くの種類があるので,できれば正規表現?で置換したいのです。~

//
- とても簡単にできます。
 > chartr("ぁ-ゖ", "ァ-ヶ", "文字列中のひらがなをカタカナに変換するんダッテ。utf-8 だと 「ぁ-ゖ」(「ぁ-ん」でもよい)。cp932(shift-jis?) なら 「ぁ-ん」。") # ぁ,ゖ,ァ,ヶ は小文字だよ
 [1] "文字列中ノヒラガナヲカタカナニ変換スルンダッテ。utf-8 ダト 「ァ-ヶ」(「ァ-ン」デモヨイ)。cp932(shift-jis?) ナラ 「ァ-ン」。"
 
 > s =  'お世話になります。
 + 文字列に格納されているひらがなをカタカナに一括で置換する方法はないでしょうか。
 + 例えば "ABCあいウエオ" を "ABCアイウエオ" に置換したいです。
 + 実際の文字列は長く、多くの種類があるので,できれば正規表現?で置換したいのです。'
 > cat(chartr("ぁ-ゖ", "ァ-ヶ", s))
 オ世話ニナリマス。
 文字列ニ格納サレテイルヒラガナヲカタカナニ一括デ置換スル方法ハナイデショウカ。
 例エバ "ABCアイウエオ" ヲ "ABCアイウエオ" ニ置換シタイデス。
 実際ノ文字列ハ長ク、多クノ種類ガアルノデ,デキレバ正規表現?デ置換シタイノデス。
回答を期待するなら,あなたの環境 OS, R のバージョンぐらい書いてね。 -- [[河童の屁は,河童にあらず, 屁である。]] &new{2017-04-30 (日) 10:41:47};
- 早急な回答ありがとうございました。今後は環境なども記載するようにいたします。 --  &new{2017-04-30 (日) 11:24:34};

#comment

**subset関数の列名の指定について [#p2f8f04c]
>[[NK]] (2017-04-21 (金) 10:30:51)~
~
お世話になります。以下のようなデータフレームがあり、subset関数で列名と条件を指定して抽出します。
 id <- c( 1, 2, 3, 4, 5)
 h <- c(158,162,177,173,166) # 身長
 w <- c( 51, 55, 72, 57, 64) # 体重
 DF <- data.frame(ID=id, H=h, W=w)
 subset(DF, ID>3)
   ID   H  W
 4  4 173 57
 5  5 166 64
このとき、列名"ID"が変数xに格納されている場合では、異なる結果になってしまいます。
 x <- "ID"
 subset(DF, x>3)
   ID   H  W
 1  1 158 51
 2  2 162 55
 3  3 177 72
 4  4 173 57
 5  5 166 64
どのようにすれば変数をデータフレームの列名として指定できるでしょうか。~
宜しくお願いします。~

//
- 聞く前に参考書で調べましょう.
 subset(DF, DF[[x]] > 3)
とか
 DF[DF[[x]] > 3, ]
とか.
- subset(DF, get(x)>3) -- [[yy]] &new{2017-04-21 (金) 17:19:47};
- ありがとうございました。変数が列名として認識されないように、ワンステップ必要になるのですね。 -- [[NK]] &new{2017-04-21 (金) 17:57:30};

#comment

**パッケージリストの一覧が表示されない [#pae68e8b]
>[[konpeki]] (2017-04-17 (月) 14:04:06)~
~
パッケージリストの一覧が表示されません。~
というか「このサイトにアクセスできません」とでるのはなぜでしょうか?~
場所が移ったのですか?~

//
- 「このサイト」って,どのサイトへアクセスしようとしたのか?&br;2個下の質問と同様,あなたの質問は必要とする情報が全くといってよいほどない。回答がもらえる可能性は,極めて低いでしょう。 --  &new{2017-04-17 (月) 14:09:06};
- ちなみに、http://www.okadajp.org/RWiki/?CRAN%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%83%AA%E3%82%B9%E3%83%88 -- [[konpeki]] &new{2017-04-17 (月) 14:17:36};
- サーバーの変更とテキストエンコーディングの変更によりリンク切れとなっていたので復旧&br;いつまでも,こんな古いリンクあさらないようにね! --  &new{2017-04-17 (月) 18:20:07};

#comment

**t検定の検定力分析(事後分析)の質問です [#e40ffe24]
>[[y931]] (2017-04-12 (水) 23:31:05)~
~
対応のない2群のt検定の検定力分析について質問させてください~
power.t.test(n=60, d=0.7, sig.level=0.05, power=NULL)~
pwr.t2n.test(n1=30,n2=30,d=0.7, sig.level=0.05)~
上記2式で検定力を求めたら異なる結果になりました~
またGpower3.1.9.2で算出するとpwr.t2n.testの結果と同じになりました~
~
サンプル数が異なるときにはpwrを使用するように・・・~
とネット上では記載されています~
~
powerとpwrの違いが理解できません~
またGpowerの結果とpwrの結果が同じになった理由も全く分かりません・・・~
~
何を勉強すればいいのかもわからない状況です~
どうかよろしくお願いいたします~

//
- > powerとpwrの違いが理解できません&br;? power.t.test,? pwr.t2n.test でオンラインヘルプさえ見なかったのですか?&br;? power.t.test の引数 n の説明として&br;number of observations (per group) と書かれていますよ。各群あたりのサンプルサイズです。&br;? pwr.t2n.test では,n1, n2 は&br;Number of observations in the first sample, ... second sample と書かれていますよ。&br;たとえ,オンラインヘルプを見なかったとしても,power.t.test の結果の最終行に&br; NOTE: n is number in *each* group&br;とわざわざ,強調表示 *each* で書いてあります。 
 > power.t.test(n=60, d=0.7, sig.level=0.05, power=NULL)
 
      Two-sample t test power calculation 
 
               n = 60
           delta = 0.7
              sd = 1
       sig.level = 0.05
           power = 0.9673141
     alternative = two.sided 
 
 NOTE: n is number in *each* group
同じにしたいなら,n1=60,n2=60 とすること!
 > pwr.t2n.test(n1=60, n2=60, d=0.7, sig.level=0.05)
 
      t test power calculation 
 
              n1 = 60
              n2 = 60
               d = 0.7
       sig.level = 0.05
           power = 0.9673141
     alternative = two.sided
power.t2n.test は,「n1, n2 を別々に指定できる」ということなんですね。~
&#x3e; サンプル数が異なるときにはpwrを使用するように・・・~
&#x3e; とネット上では記載されています~
というのは,そういうことを意味しているんです(って,そのままやん)-- [[河童の屁は,河童にあらず,屁である。]] &new{2017-04-13 (木) 09:43:04};
- いつも明快なご回答を拝見させていいただきております.私の質問にもお答えいただきスッキリしました.本当にありがとうございました. -- [[y931]] &new{2017-04-13 (木) 15:35:10};

#comment

**Error: could not find function "XXX" [#x2eabfd2]
>[[とんとん]] (2017-04-11 (火) 02:01:10)~
~
こんばんわ。Rでパッケージをインストールした後にLibrary()で使えるようにしても題名にあるエラーメッセージが出てPackage内の関数が使えず困っています。他のパッケージ内の関数は使えるのですが、どうすればいいかどなたか教えていただけたら幸いです。~

//
- あなたの質問には情報がほとんどない。&br;そもそも,そのライブラリの名前は?関数名は?OSは?Rのバージョンは?&br;XXXという関数はたぶんどこにもないだろう(笑)&br;なんにもわからないので,答えようがない。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-04-11 (火) 07:58:19};
- この類のエラーは、抽象化して一般化できるものではなく、具体的にかつ個別に考えなければ解決の糸口が見えないものです。「エラー:関数XXXが見つかりません」はXXXという名前の関数が探した範囲にはないという意味です。その理由は事例によってさまざまでしょう。それ以上の手がかりがないので、助言のしようがありません。 --  &new{2017-04-11 (火) 11:04:19};

#comment

**Brunner-Munzel検定に関する「事後の検定力分析」について [#ybbd0b1c]
>[[こんばんは]] (2017-04-04 (火) 19:29:23)~
~
「Brunner-Munzel検定」について一点お伺いしたい事がございます。この検定を行った際、十分な検定力があったかを確かめる為に検定力分析を行いたいと考えているのですが、適切な方法をもしご存知の方がいらっしゃいましたらご教授していただきたいです。また、もしBM検定の為の方法がなければ、代わりの方法としてt検定など類似の検定に対する検定力分析を行うことになりますでしょうか。何卒よろしくお願いいたします。~

//
- シミュレーション実験すればよいのでは? -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-04-05 (水) 21:04:42};

#comment

**折れ線グラフの重ね書きで、異なる線種を与える [#xc1ddc12]
>[[さくやひこ]] (2017-03-27 (月) 12:21:54)~
~
折れ線グラフを重ね書きする際、線種(line type)をそれぞれの折れ線に与える方法について、ご質問させていただきます。~
3本の線を1本ずつ描いて、それぞれに異なる線種与え、重ね書きすると、異なる線種で描かれるのですが、対応がおかしくなります。実線を指定したはずの線にダッシュが付いたり、ダッシュを指定した線に実線が付いたりします。また、それをfor文で、繰り返しをさせて描くと、3本の線が同じ線種になってしまいます。データについてですが、3本の線は、同じ形式だが異なるcsvファイル"aa", "bb", "cc"に基づいています。~
どのようにすれば、このような問題を解決できるか、御教示いただければ幸いです。~
なお、環境は
 R version 3.3.1 (2016-06-21)
 Platform: x86_64-w64-mingw32/x64 (64-bit)
 Running under: Windows 8.1 x64 (build 9200)
★ データaa ↓ 他の2つ(bbとcc)も変数は同じです。
    No.Tree      radi year
 1        1  0.000000 -166
 2        1  1.290000 -161
 3        1  2.000000 -156
 4        1  2.806667 -151
 ---中略---
 33       1 20.103333   -6
 34       1 20.403333   -1
 35       1 20.523333    0
★ 3本の線を1つずつ描いて、それぞれに異なる線種与え、それらを重ね書きするスクリプト ↓
 pp <- ggplot(NULL)  # 初期値を与える
 line.type <- c("solid", "dashed", "twodash") # 線種を与える
 #--1---
 x <-read.csv(aa)
 pp <- pp + geom_line(data=x, aes(year, radi, linetype=line.type[1])) + 
   geom_point(data=x, aes(year, radi))  
 #--2---
 x <- read.csv(bb)
 pp <- pp + geom_line(data=x, aes(year, radi, linetype=line.type[2])) + 
   geom_point(data=x, aes(year, radi))  
 #--3---
 x <- read.csv(cc)
 pp <-pp + geom_line(data=x, aes(year, radi, linetype=line.type[3])) +  geom_point(data=x, aes(year, radi))  
  plot(pp)
しかし、これをfor文で反復すると、線種の描き分けができません。
 fl <- dir()   # flには 3つのファイル名"aa", "bb", "cc"が代入される
 pp <- ggplot(NULL)  # 初期値を与える
 line.type <- c("solid", "dashed", "twodash")  # 線種を与える
 for(i in 1:length(fl)){
     x <- read.csv(fl[i])
     pp <- pp + geom_line(data=x, aes(year, radi, linetype=line.type[i])) +  geom_point(data=x, aes(year, radi))  
 }
 plot(pp)

//
- 問題の現象は再現したけど、ggplot()に詳しい人が来ないと分からないな。自分なら、次のようにする。 --  &new{2017-03-27 (月) 23:56:05};~
 ltys <- c(1, 2, 6)
 f <- radi ~ year
 for (i in seq_along(fl)) {
     if (i == 1) {
         plot(f, data = read.csv(fl[i]), type = "b", lty = ltys[i])
     } else {
         lines(f, data = read.csv(fl[i]), type = "b", lty = ltys[i])
     }
 }
- > geom_line(data=x, aes(year, radi, linetype=line.type[i])) じゃなくて&br;geom_line(data=x, aes(year, radi), linetype=line.type[i]) だろ -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-03-28 (火) 12:07:15};
- さっそくアドバイスありがとうございました。最初の方のお答えどおり、動かしてみて意図した結果をえました。まだ、理解出来ていないところ(5行目のplot()をline()にするとエラーになる理由)がありますので、これから勉強いたします。&br;河童の屁さまのアドバイス通り修正すると、これも意図した結果がえられました。"R Graphics Cookbook(英語版)" のp70に、図を重ねる例として、ご教示どおりのスクリプト(linetype=をaes()の外のにだす)が出ていました。私のスクリプトはp54を参考にしたものです。私のスクリプトは、私の使った3つのファイルをrbind()で合体して、それぞれのファイルデータ相当に対して、識別変数を与えた場合に使うもののようです。ただ、なぜ違った書き方をしなくてはいけないのかは、分かっていません。 -- [[さくやひこ]] &new{2017-03-28 (火) 16:49:46};
- > 5行目のplot()をline()にするとエラーになる理由&br;lines ね。i=1 のときの plot は,ウインドウの設定など(最初に1回だけ必要)のあと,折れ線を描くため。i=2 以降は,折線を描くだけ(ウインドウ設定は終わっている)。&br;> 私のスクリプトはp54を参考にしたものです。
 pp <- ggplot(NULL)  # 初期値を与える
 x = NULL
 for (i in 1:length(fl)){
      x = rbind(x, read.csv(fl[i])) # 1 つのデータフレームにする(やり方は問わず)
 }
 line.type <- c("solid", "dashed", "twodash") # 線種を与える
 for(i in 1:length(fl)){
     pp <- pp + geom_line(data=x, aes(year, radi, linetype=line.type[No.Tree])) +  geom_point(data=x, aes(year, radi))  
 }
 plot(pp)
みたいにするんだろうね。aes の内側には,図形描画要素を変数を使って指定する。aes の外側なら,定数で指定するんだろうね。&br;プログラムを写すのではなく,意味を考えないと応用ができない。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-03-28 (火) 17:14:47};
- 河童の屁さま。解説ありがとうございました。何を理解すべきか、見えてきた感じがあります。今朝からHardleyの"ggplot2"(2009)の3章を再読し始めました。だいぶ前に読んだときは、ggplotをほとんどいじったことがない頃で、「闇夜に提灯」状態でした。今回読みなおして、手応えがあります。今回陥った理由を知りたいという目的があるからでしょう。ありがとうございました。周りに聞く人とてなく、100%独学で学んでいるので、今回のような質問ができる場所は、大変ありがたいです。お世話になりました。 -- [[さくやひこ]] &new{2017-03-29 (水) 10:04:30};

#comment

**rstanおよびggplot2の不調 [#lc7e1e1e]
>[[こんばんは]] (2017-03-26 (日) 01:29:18)~
~
目的はrstanの実行なのですが、いろいろやった結果、library(rstan)で、「1:  パッケージ ‘rstan’ はバージョン 3.3.3 の R の下で造られました   2:  パッケージ ‘ggplot2’ はバージョン 3.4.0 の R の下で造られました   3:  get(Info[i, 1], envir = env) で:  internal error -3 in R_decompress1  エラー:  パッケージ ‘ggplot2’ をロードできませんでした 」がでます。しかも、install.packages("ggplot2")に「 パッケージ ‘ggplot2’ が利用できません (for R version 3.3.1) 」なってしまいます(これまでは問題なくggplot2は使ってましつた)。古いggplot2をDLてやっても、「パッケージ ‘ggplot2_2.1.0.tar.gz’ のインストールは、ゼロでない終了値をも」がでます。Rは3.3.1です。インストールのし直しはやってみました。解決策はありますか?~

//
- まずは,R 3.3.3 にしてみたらどうですか。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-03-26 (日) 09:11:14};
- Rstudioでやり直したら、なんとかなりました。ありがとうございます。 -- [[こんばんは?]] &new{2017-03-26 (日) 09:42:17};

#comment

**複数の変数名を関数の引数に指定する方法 [#r49032af]
>[[R初心者]] (2017-03-21 (火) 12:05:58)~
~
データirisを使いまして、
 >  head(iris, n=2)
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
 1          5.1         3.5          1.4         0.2  setosa
 2          4.9         3.0          1.4         0.2  setosa
irisの「1つの」変数名を引数とし、指定された変数の平均値を求める場合は、関数eval()と関数substitute()を組み合わせることで実現できます。
 >  f1 <- function (VAR) {
 +    eval(substitute(TMP <- aggregate(VAR ~ Species, data=iris, mean)))
 +    print(TMP)
 +  }
 >  f1(Sepal.Length)
      Species Sepal.Length
 1     setosa        5.006
 2 versicolor        5.936
 3  virginica        6.588
同様にして、irisの「複数の」変数名を例えばリスト化/ベクトル化して引数とし、例えば以下の様にすると、指定された変数ごとに平均値を求めようとするとエラーが出ます。~
要は「複数の」変数名を上手くリスト化/ベクトル化出来ず困っています。何か良い知恵がございましたらご教示願います。
 > f2 <- function (VAR) {
 +   for (i in 1:length(VAR)) {
 +     eval(substitute(TMP <- aggregate(VAR[[i]] ~ Species, data=iris, mean)))
 +     print(TMP)
 +   }
 + }
 > f2(list(Sepal.Length, Petal.Length))
  f2(list(Sepal.Length, Petal.Length)) でエラー: 
    オブジェクト 'Sepal.Length' がありません 
 > f2(c(Sepal.Length, Petal.Length))
  f2(c(Sepal.Length, Petal.Length)) でエラー: 
    オブジェクト 'Sepal.Length' がありません

//
- う〜〜ん。なかなか,難しいですね。~
以下のようにすれば,何とかできたのですが,変数名は x になってしまうし,それよりなにより「汎用性に欠ける」と思いますね。
 > f2 = function(...) {
 + 	args = sub("\\(", "(iris$", deparse(substitute(list(...))))
 + 	args = gsub(" ", " iris$", args)
 + 	args = sprintf("lapply(%s, function(x) aggregate(x, by=list(Species=iris$Species), FUN=mean))", args)
 + 	invisible(sapply(eval(parse(text=args)), print))
 + }
  
 > f2(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)
      Species     x
 1     setosa 5.006
 2 versicolor 5.936
 3  virginica 6.588
      Species     x
 1     setosa 3.428
 2 versicolor 2.770
 3  virginica 2.974
      Species     x
 1     setosa 1.462
 2 versicolor 4.260
 3  virginica 5.552
      Species     x
 1     setosa 0.246
 2 versicolor 1.326
 3  virginica 2.026
汎用性なんか気にしなければ,出力結果をそのままコピーペーストして利用するのでもないのだから,以下のようにすれば関数定義も不要だし,無問題。キー入力文字数なんて,屁でもないでしょう。
 > lapply(iris[,1:4], function(x) aggregate(x, by=list(iris$Species), mean))
 $Sepal.Length
      Group.1     x
 1     setosa 5.006
 2 versicolor 5.936
 3  virginica 6.588
 
 $Sepal.Width
      Group.1     x
 1     setosa 3.428
 2 versicolor 2.770
 3  virginica 2.974
 
 $Petal.Length
      Group.1     x
 1     setosa 1.462
 2 versicolor 4.260
 3  virginica 5.552
 
 $Petal.Width
      Group.1     x
 1     setosa 0.246
 2 versicolor 1.326
 3  virginica 2.026
どうでしょうかね?? -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-03-21 (火) 22:22:18};
- 河童様、早速お返事いただきましてありがとうございます!河童様で汎用化が難しいのであれば諦めます...~
(本質問では問題を単純化しておりますが、実際はユーザーが任意指定する数十個の変数について要約統計量を算出し、~
結果を縦積みにしてデータフレームにした後、さらに・・・という作業です)。~
データの変数名を文字列ベクトルで与え、関数内で unquote 処理等を行って変数名と認識させられないか、等~
いろいろ試行錯誤してみたのですが・・・、なかなか難しいですね。大変勉強になりました。ありがとうございます。 -- [[R初心者]] &new{2017-03-22 (水) 00:19:37};
- 「データの変数名を文字列ベクトルで与え」てもよいなら,以下のようにすれば汎用的になるんですけど?(" " で囲むのも面倒だと言っているのかと思った)
データフレーム名は文字列として第1引数で指定(例題の場合なら "iris")
aggregate の対象変数名も文字列として第2引数以降に列挙。
 f2 = function(df, ...) {
   invisible(lapply(
     lapply(unlist(list(...)), function(s) 
        eval(parse(text=sprintf("aggregate(%s ~ Species, data=%s, mean)", s, df)))
     ), print))
 }
実行例は
 >  f2("iris", "Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width")
      Species Sepal.Length
 1     setosa        5.006
 2 versicolor        5.936
 3  virginica        6.588
      Species Sepal.Width
 1     setosa       3.428
 2 versicolor       2.770
 3  virginica       2.974
      Species Petal.Length
 1     setosa        1.462
 2 versicolor        4.260
 3  virginica        5.552
      Species Petal.Width
 1     setosa       0.246
 2 versicolor       1.326
 3  virginica       2.026
汎用化を阻まないような関数仕様にすればよいと言うこと
変数の指定を空白で区切った 1 つの文字列で指定するなら
 f3 = function(df, var) {
   invisible(lapply(
     lapply(strsplit(var, " ")[[1]], function(s)
      eval(parse(text=sprintf("aggregate(%s ~ Species, data=%s, mean)", s, df)))
    ), print))
 }
 f3("iris", "Sepal.Length Sepal.Width Petal.Length Petal.Width") # 引用符を打つ回数を減らせる
f4("iris Sepal.Length Sepal.Width Petal.Length Petal.Width") のように,引数 1 つに,1 つの文字列で指定するようにするのも,応用問題。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-03-22 (水) 00:46:11};
- 大変ありがとうございました!f2 の例を参考にさせていただきます。 -- [[R初心者]] &new{2017-03-22 (水) 07:26:57};
 >  f2_revised <- function (...) {
 +    VAR <- unlist(list(...))
 +    for (i in 1:length(VAR)) {
 +      TMP <- transform(eval(parse(text=paste("aggregate(", VAR[i], "~ Species, data=iris, mean)"))), x=VAR[i])
 +      colnames(TMP) <- c("Species", "Mean", "Variable")
 +      ifelse(i==1, RESULT <- TMP, RESULT <- rbind(RESULT, TMP))
 +    }
 +    return(RESULT[,c(3,1,2)])
 +  }
 >  f2_revised("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width")
        Variable    Species  Mean
 1  Sepal.Length     setosa 5.006
 2  Sepal.Length versicolor 5.936
 3  Sepal.Length  virginica 6.588
 4   Sepal.Width     setosa 3.428
 5   Sepal.Width versicolor 2.770
 6   Sepal.Width  virginica 2.974
 7  Petal.Length     setosa 1.462
 8  Petal.Length versicolor 4.260
 9  Petal.Length  virginica 5.552
 10  Petal.Width     setosa 0.246
 11  Petal.Width versicolor 1.326
 12  Petal.Width  virginica 2.026
 

#comment

**RのSys.time()について [#hcdb6c87]
>[[R大好き]] (2017-03-02 (木) 12:35:38)~
~
 > Sys.timezone()
 [1] "JST"
 > system("date")
 2017年  3月  2日 木曜日 03:32:37 JST
 > Sys.time()
 [1] "2017-03-02 03:32:45 JST"
となるのですが~
実際にはこの表示されてる時間はUTCです
 $date
 2017年  3月  2日 木曜日 12:33:43 JST
なるので9時間ずれてます~
これはなんでこうなってしまうのでしょうか?~
ちゃんとTZも設定してるのに?
 > Sys.time()+60*60*9
 [1] "2017-03-02 12:34:31 JST"
して9時間分ずらせば正しいローカルタイムにはなるのですが,こんな余計な+60*60*9 をつけずに上手くローカルタイムを表示させるにはどうすれば良いのでしょうか?~
よろしくお願い致します~

//
- ヘンですね。こちらの環境(Ubuntu 16.04.2 LTS/Mac OS X 10.12.3)ではちゃんとローカルタイムになります。 --  &new{2017-03-02 (木) 16:13:50};~
現在16:14ですが、
 > system("date"); Sys.time()
 2017年  3月  2日 木曜日 16:14:50 JST
 [1] "2017-03-02 16:14:50 JST"
きちんとJST時間が表示されています。環境依存の話なので、まずは環境を開示すべきと思います。
- Linux Debian Sidです。同じ結果になるはずなので、新規にRを起動してやると正常になりました。Sys.getenv("TZ")で""がかえり Sys.timezone() で'Japan"がかえる状況でした。  -- [[R大好き]] &new{2017-03-02 (木) 16:39:08};
- Debian Sidです Ubuntu と同じはずなので新規に起動してやってみると同じになりました
 > Sys.setenv(TZ="JST")
 > Sys.timezone()
 [1] "JST"
の状態にするとおかしくなるようです。 これをするまえに Sys.getenv("TZ") すると"" が Sys.timezone() すると"Japan"がかえる状況だと正常にローカルタイムがゲットできるようです。環境変数TZを"JST"に設定したことがまずいようです -- [[R大好き]] &new{2017-03-02 (木) 16:41:46};
- Rと全く関係がない話で、Debianで下記の通りに再現できますよ。 --  &new{2017-03-02 (木) 17:01:19};
 $ lsb_release -d
 Description:	Debian GNU/Linux 8.7 (jessie)
 $ date
 2017年  3月  2日 木曜日 17:00:31 JST
 $ export TZ="JST"
 $ date
 2017年  3月  2日 木曜日 08:00:42 JST
 $ export TZ="JST-9"
 $ date
 2017年  3月  2日 木曜日 17:02:52 JST
つまり、JSTじゃなくてJST-9にする。詳しくはman tznameでTZの書き方を参照。
- 情報ありがとうございます。 TZ="JST"っていう指定方法が規格から外れてるってとですかね?  "JST-9"が正解? -- [[R大好き]] &new{2017-03-02 (木) 17:50:47};

#comment


**quantmodパッケージにおける点のプロット方法 [#n225e088]
>[[kii]] (2017-02-26 (日) 16:45:53)~
~
パッケージ{quantmod}で、グラフ内に点を表示させる方法を教えて下さい。~
推測ですがaddPointsという引数を使うようなのですが、マニュアルをみてもよく分かりません。調べる方法を合わせてご教授下さるとありがたいです。~
#https://cran.r-project.org/web/packages/quantmod/quantmod.pdf~
~
例えば下記のグラフにおけるx=2016-01-04, y=200の地点に白色の点を描写したいと思っています。よろしくお願いいたします。
 library("quantmod")
 getSymbols("GS") #Goldman OHLC from yahoo 
 chartSeries(GS)

//
- なんか知らんけど,下の投稿記事が参考になるんじゃないの?
 library("quantmod")
 getSymbols("GS") #Goldman OHLC from yahoo 
 chartSeries(GS)
 plot(
 addPoints(2016-01-04, 200, col="white")
 )
投稿する前に,ちょっとは前の方の質問も見た方がよいね。~
"quantmod 使い方" で検索しても,たくさん見つかるし。なんで,人に代わって私が検索しなけりゃなんないのか?って話。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-02-26 (日) 19:57:21};

#comment

**関数内での実行環境を呼びだし元の環境に設定する方法を知りたい [#m2f9d0bc]
>[[R大好き]] (2017-02-20 (月) 00:52:33)~
~
関数内での実行環境を呼びだし元の環境に設定する方法を知りたいのですがどうやれば良いのでしょうか?~
~
quantmodっていうパッケージのaddLines関数を使って~
チャート表示した後に関数内で複数下位addLinesやaddPointsを呼びだして~
ラインや点をうちたいのですが~
関数内でaddLinesやaddPointsを実行してもチャートに変化があらわれません~
~
関数内部じゃなくて親環境で実行するとチャートに反映されるので~
関数内の実行環境を親環境にしてやれば関数内でも上手く処理できると思うのですが~
そのやり方がわかりません~
~
昔どこかでその方法を見た気がするのですが~
ネット検索してもその元記事を発見できませんでしたので~
ここで質問させていただくことにしました~
よろしくお願い致します~

//
- 環境かえなくてもなぜかplot()でaddLinesやaddPointsを囲んでやると上手く出来きました。 -- [[R大好き]] &new{2017-02-20 (月) 09:03:31};

#comment

**判別分析RとSPSSの違い [#i8ff2ecf]
>[[Isan]] (2017-02-15 (水) 15:24:55)~
~
Rで判別分析 library(MASS)のlda関数を使った場合と、SPSSの結果が異なるのはなぜでしょうか。データはhttp://psy.isc.chubu.ac.jp/~oshiolab/teaching_folder/datakaiseki_folder/07_folder/da07_02.htmlからお借りしました。以下のように係数が異なっています。
 > r.result<-lda(jidosha~., data=datscale, prior=c(0.5,0.5))
 
 Coefficients of linear discriminants:
                 LD1
 gaikosei  1.6550380
 kyomi     0.7117249
 keizai   -0.4656510
SPSSの結果:http://psy.isc.chubu.ac.jp/~oshiolab/teaching_folder/datakaiseki_folder/07_folder/da07_02.html より
 外交性 1.071
 興味  0.636
 経済力 -.476

//
- SPSSを持っていないので追試できていませんが、計算方法が異なることが原因だと思います。lda()だって、methodを変更すれば結果の値は変わります。 --  &new{2017-02-20 (月) 15:17:24};
 > list(
 + mle = round(lda(自動車所有 ~ ., data = d, method = "mle")$scaling, 2),
 + mve = round(lda(自動車所有 ~ ., data = d, method = "mve")$scaling, 2), 
 + moment = round(lda(自動車所有 ~ ., data = d, method = "moment")$scaling, 2))
 $mle
          LD1
 外向性  1.55
 興味    0.68
 経済力 -0.43
 
 $mve
          LD1
 外向性  2.69
 興味    3.08
 経済力 -1.90
 
 $moment
          LD1
 外向性  1.38
 興味    0.61
 経済力 -0.39

#comment

**RMeCabでのわかち書きについて [#ke438408]
>[[質問場所が不適切だったよ]] (2017-02-08 (水) 17:23:47)~
~
R言語で以下のコードでわかち書きをした時に, 品詞を取り除いた形で取り出すにはどのようにしたら良いでしょうか?~
また、抜き出す品詞も指定できると助かります。~
 res = RMeCabC("今日は晴れです。")
よろしくお願いいたします。~

//
- どうも,最近 R そのものへの質問ではなく,R のパッケージなどへの質問が殖えているなあ。それらは,それぞれのパッケージ作者への質問になるべきだと思うのだけどなあ。一般の R ユーザが手助けできるとも思えないなあ。直接,聞いてみたらいかが? -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-02-08 (水) 22:13:13};

#comment

**RcmdrPlugin.survivalが使えません。 [#n1838528]
>[[青葉46号]] (2017-02-07 (火) 17:13:17)~
~
RcmdrPlugin.survival以外のプラグインは問題なく使えるのですが、このプラグインだけが使えず困っています。~
PCのOSはWindows8.1で、Rの環境は下記のとおりです。~
R version 3.3.2 (2016-10-31) -- "Sincere Pumpkin Patch"~
Copyright (C) 2016 The R Foundation for Statistical Computing~
Platform: i386-w64-mingw32/i386 (32-bit)~
Rcmdrのバージョン 2.3です。~
RcmdrPlugin.survivalをロードすると下記のエラーが表示され、メニューが小さいままで大きく展開されずに止まります。理由がわからず困っています。
 Error in structure(.External(.C_dotTclObjv, objv), class = "tclObj") : 
  [tcl] invalid command name "configure".
小さいメニューには[ファイル],[編集],[データ]の表示はされています。~
解決法をどなたか教えてください。お願いします。~

//

#comment

**行列の成分の回転 [#gcde690d]
>[[羊]] (2017-02-07 (火) 01:52:27)~
~
200×200の正方行列Aについて~
各成分を90度回転させた行列Bを作りたいです。~
~
すなわちAのi行j列の成分が~
Bの201-j行i列となるような行列です。~
~
シンプルにループを回す方法もあるかと思いますが~
この処理を数十万回回す必要があるので処理の比較的早い方法があれば教えてください。~

//
- 質問の前に、本wikiの行列Tips大全に目を通しては如何でしょうか? -- [[ ]] &new{2017-02-07 (火) 09:10:53};
- 行列Tips大全に回答がありました。ご指摘ありがとうございました。 --  &new{2017-02-07 (火) 09:19:33};

#comment

**legend() で plotmath と expression をまぜて使いたい。 [#hf224af8]
>[[まり]] (2017-02-03 (金) 13:07:03)~
~
プロット上で %->% の矢印と テキストを混ぜて使いたいです。何か方法はありますか。下の例で二番目の %->% を三番目の → にしたいです。
 a1 <- expression(paste('This is omega. ', omega))
 a2 <- expression(paste('This is an arrow. ', '%->%'))
 a3 <- expression(3 %->% 33)
 plot(0)
 legend('bottomleft', c(a1,a2,a3))
よろしくお願いします。~

//
- 記号として直接挿入するのが簡単です。a4 <- expression(paste('This is an arrow. ', symbol("\256"))) ~
番号については https://www.adobe.com/products/postscript/pdfs/PLRM.pdf を参考にして下さい。 -- [[通りすがり]] &new{2017-02-03 (金) 14:14:07};
- 通りすがりさん。どうもありがとうございました。 -- [[まり]] &new{2017-02-03 (金) 15:13:12};

#comment

**mxnetの呼び出しに失敗します。 [#s3ef6bca]
>[[obo]] (2017-02-02 (木) 14:11:52)~
~
mxnetを呼び出す時に以下のエラーが出ます。~
 > library(mxnet)
 Error :  オブジェクト ‘combine_edges’ は 'namespace:DiagrammeR' によってエクスポートされていません 
 エラー:  ‘mxnet’ に対するパッケージもしくは名前空間のロードが失敗しました。 
環境はWIN7,R×64,3.3.2です。御教授御願い致します。

//
- http://stackoverflow.com/questions/41469083/install-error-on-mxnet や~
https://github.com/dmlc/mxnet/issues/4527 が参考になるかも -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-02-02 (木) 14:41:53};
- 河童の屁は,河童にあらず,屁である。さん、御教授ありがとうございます。DiagrammeRを古いバージョンをダウンロードしたら立ち上がりました。とても助かりました。 -- [[obo]] &new{2017-02-02 (木) 15:09:24};

#comment

**一定時間以内に関数の処理が終了しない場合に、停止させたい [#i5d1e019]
>[[かい]] (2017-01-27 (金) 21:01:40)~
~
関数の実行時、一定時間(例えば1分)以内に処理が終了しない場合、~
処理を強制的に停止させ、エラーを返すようなスクリプトはどのようにすれば可能でしょうか?~
~
例えば以下のように、間違えて変数xに大きすぎる値を入れてしまった場合、強制的にエラーを返して停止できるようなものです。よろしくお願いいたします。
  x <- 9999999
  Sys.sleep(x)
  print(x)

//
- setSessionTimeLimit()を使うのはどうでしょうか。 -- [[S]] &new{2017-01-30 (月) 17:30:49};
 > setSessionTimeLimit(elapsed = 60); for(i in 1:10){print(i);Sys.sleep(20)}
 [1] 1
 [1] 2
 [1] 3
  Sys.sleep(20) でエラー:  セッション時間が経過して上限に達しました 
 >
- 参考になりました。御助言ありがとうございました。 -- [[かい]] &new{2017-01-30 (月) 22:52:54};

#comment

**docMatrixの品詞の細分類について [#fe6b10f1]
> (2017-01-27 (金) 11:38:43)~
~
Rで文章集合に対してTF-IDFを算出する際に~
res = docMatrix("txt", pos=c("名詞", "形容詞"), weight="tf*idf*norm")~
と記述するのですが, 名詞, 形容詞でも非自立語や数などを取り除きたいときはどのようにすれば良いのでしょうか~
よろしくお願いいたします。~

//
- docMatrix() の代わりにdocDF(type = 1) を用いて、その結果を処理していくのが良いかと? (以下コード例) -- [[通りすがり]] &new{2017-01-28 (土) 09:45:45};
 res0 <- docDF("txt", pos = c("名詞", "形容詞"), type = 1, N = 1)
 res <- subset(res0, POS2 != "非自立" & POS2 != "数")
 
 tf_ <- localTF(res[,-(1:3)])                    # weight = "tf"
 tf_idf <- tf_ * globalIDF(tf_)                  # weight = "tf*idf"
 tf_idf_norm <- t(t(tf_idf) * mynorm(tf_idf))    # weight = "tf*idf*norm"
 
 result <- cbind(res[,1:3], tf_idf_norm)
 result
- お返事ありがとうごさいます。データで確認し次第書き込みいたします。 --  &new{2017-01-30 (月) 16:34:03};

#comment

**新しいIDを割りふりたい [#j53325d4]
>[[困っています。。。]] (2017-01-22 (日) 13:34:42)~
~
以下のような2種類のIDを持つデータを考えます。
 id1   id2
   1    11 
   1    12 
   2    12 
   2    13 
   3    14 
   3    15 
   4    15
この2つのIDのもし一方でも同じであれば、同一のIDを割り振るようにいたいのですが、良い知恵がうかびません。具体的には下記のnewidに相当するものを作りたいのです。
 id1   id2     newid
   1    11         1 
   1    12         1 
   2    12         2 
   2    13         2 
   3    14         3 
   3    15         3 
   4    15         3
ご教示いいただけると幸いです。よろしくお願いします。~

//
- > 2つのIDのもし一方でも同じであれば、同一のID&br;そのルールで言えば,(2, 12) も (2, 13) も newid は 1 になるんじゃないか?&br;(3, 14) も (3, 15) も (4, 15) も同じ newid = 3 になるのなら。&br;仕様は明確に。例は正しいものを。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-01-22 (日) 13:47:34};
- 確認不足でした、ご指摘の通りです。 -- [[困っています。。。]] &new{2017-01-22 (日) 15:25:29};
- 以下のようなプログラムでどうでしょう -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-01-22 (日) 15:39:19};
 > d <- data.frame(id1=c(1,1,2,2,3,3,4,6,11), id2=c(11,12,12,13,14,15,15,12,21))
 > d
   id1 id2
 1   1  11
 2   1  12
 3   2  12
 4   2  13
 5   3  14
 6   3  15
 7   4  15
 8   6  12
 9  11  21
 >
 > n <- nrow(d) 
 > newID <- 0
 > for (i in 1:n) {
 +     found <- FALSE
 +     for (j in seq_len(i-1)) {
 +         if (d$id1[i] == d$id1[j] ||d$id2[i] == d$id2[j]) {
 +             found <- TRUE
 +             d$newid[i] <- d$newid[j]
 +             break
 +         }
 +     }
 +     if (!found) {
 +         newID <- newID +1
 +         d$newid[i] <- newID
 +     }
 + }
 > d			
   id1 id2 newid
 1   1  11     1
 2   1  12     1
 3   2  12     1
 4   2  13     1
 5   3  14     2
 6   3  15     2
 7   4  15     2
 8   6  12     1
 9  11  21     3
- 早速のお返事ありがとうございます。実際のデータで確認して、報告させていただきます。 -- [[困っています。。。]] &new{2017-01-23 (月) 08:09:36};
- うまく行きました。大変に助かりました。また、プログラムについても今一度勉強させていただきます。 -- [[困っています。。。]] &new{2017-01-23 (月) 09:57:36};

#comment

**パッケージlubridataについて [#fc8c9047]
>[[R勉強中]] (2017-01-21 (土) 18:58:06)~
~
パッケージlubridataがインストールできません。~
「警告メッセージ: パッケージ ‘lubridata’ が利用できません (for R version 3.3.2) 」~
Rのバージョンは3.3.2です。~
パッケージlubridataのpdfによるとDepends methods, R (>= 3.0.0)とありますので、~
バージョンの問題はないと思いますが、何が問題なのでしょうか。~
ご教授いただけますと幸いです。~
お手数をおかけしますがよろしくお願いたします。~

//
- lubridate では?&br;そもそも,どのように「インストールできない」のか?&br;まさかとは思っていたけど,やっぱり綴りミスなんだね。4箇所も lubridata って書いてるから,すっかりそうだと思い込んでたんだね。
 > install.packages("lubridata")
  警告メッセージ: 
  パッケージ ‘lubridata’ が利用できません (for R version 3.3.2)  
そりゃそうだ。lubridata なんてパッケージはないんだから,利用できないのは当たり前だのクラッカー。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-01-22 (日) 07:52:23};
- 「何が問題なのでしょうか。」に答えることができるだけの情報提示がなく、誰も助言できないと思いますよ。こちらの環境(Ubuntu 16.04.1 + R 3.3.2)では問題なくlubridateパッケージをインストールできましたよ。 -- [[S]] &new{2017-01-23 (月) 13:55:22};

#comment

**条件分岐にこたえる方法 [#s72a12ff]
>[[step]] (2017-01-18 (水) 15:45:34)~
~
いつもお世話になっております。~
step()関数を使用していたところ、データにNAが含まれていたらしく、「使用中の行数が変わりました: 欠損値を取除きますか?」と返ってきたのですが、この質問に対して「yes」と答えて関数を続行する操作方法がわかりません。。。~
(単純にyes yとうつと、オブジェクトと認識されてしまいます)~
~
初歩的で恐縮ですが、ご教示頂けると幸いです。よろしくお願い致します。~

//
- これは,ユーザの対応(入力)を求めるものではないので,yes とか答えてプログラムに何らかの処理をしてもらうことはできません。&br;初心者ということですが,このような場合には,関数定義を見るとよいでしょう。コンソールに step  とだけ入力すると関数の定義が示されます。&br;件のメッセージは,以下のようになっています。
        if (all(is.finite(c(n, nnew))) && nnew != n) 
            stop("number of rows in use has changed: remove missing values?")
つまり,stop 文によって表示されているものです。文字通り,"remove missing values?" を表示して,ユーザの回答も要求しないで,処理を停止します(なんたること.
そもそも,このメッセージは疑問文ではなく,命令文であるべきなんでしょうね)。&br;欠損値を除くのは,あなたです。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-01-18 (水) 17:45:37};
- これは学生からよく受ける質問です。「R step na.omit」で検索して下さい。 -- [[S]] &new{2017-01-23 (月) 14:06:25};
- ご返事遅れてしまい恐縮です。そうだったんですね...。代替的に自分でNA除去しておりましたが、その方法しかないということで、承知しました。ご丁寧にご教示頂きありがとうございました。大変助かりました。 -- [[step]] &new{2017-01-24 (火) 15:22:46};

#comment

**rpartによる分割結果のデータ数と元データのデータ数が合わない [#b186d358]
>[[ddd_mmm]] (2017-01-16 (月) 17:35:34)~
~
いつもお世話になっています。初めてご質問させて頂きます。~
rpartで分割されたデータ数と元データのデータ数が一致しません。~
~
目的変数は質的変数(2値(good/bad))、説明変数は量・質どちらも含み決定木(rpart)を実施しました。~
結果、ある量的変数(以下X)が>=1.1の条件で以下のように分割する結果が出たのですが、実際に元データを見ると、x>=1.1では左箱のN数(886)ではなく464レコードなので、原因が分からず困っています。~
ご教示の程、何卒よろしくお願いします。~
&ref(Rplot01);
~
以下はスクリプト例です。
 # データインプット
 data <- read.csv("分析_v6.csv", header=TRUE)
 head(data)
 # 数字データのカンマ処理
 for (i in 1:ncol(data)) {
   data[,i]<-gsub(",", "", data[, i])
 }
 # データ型確認
 for (i in 1:ncol(data)) {
   print(c(names(data[i]), class(data[, i])))
 }
 # 決定木実施
 dt1 <- rpart(goodbad ~ x, data=data, parms=list(split="gini"), method="class")

//
- 分析_v6.csv の内容がわからないので追試もできないし,スクリプトだけを示しても,head(data) の結果も表示されていないし,データ型確認の結果も表示されていないし,Rplot01 もアップロードしていないし,よほどの超能力を持った人でなければ返事のしようがないだろう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-01-16 (月) 18:03:24};
- 早々にご指摘頂きありがとうございます。不明確な点が多々あり失礼しました。 -- [[ddd_mmm]] &new{2017-01-16 (月) 19:42:44};
- 早々にご指摘頂きありがとうございます。不明確な点が多々あり失礼しました。 -- [[ddd_mmm]] &new{2017-01-16 (月) 19:42:47};
- #ref(http://www.fastpic.jp/viewer.php?file=4576876605.png) ~こちらがアウトプット画像です。アップロードが成功していませんでした。~同時に使用したデータも記載します。&ref(https://free.filesend.to/filedn_infoindex?rp=5346df1823f0906a99875cd034c4337o); ~データ・画像の上げ方がわからず、失敗していましたらすみません。 --  &new{2017-01-16 (月) 19:49:42};
- #ref(http://www.fastpic.jp/viewer.php?file=4576876605.png) ~こちらがアウトプット画像です。アップロードが成功していませんでした。~同時に使用したデータも記載します。&ref(https://free.filesend.to/filedn_infoindex?rp=5346df1823f0906a99875cd034c4337o); ~データ・画像の上げ方がわからず、失敗していましたらすみません。 --  &new{2017-01-16 (月) 19:51:59};
- アップロードの方法も含め,利用法についての説明を読んでからにしましょう。&br;なんとか,データもダウンロードして追試しました。&br;変数名は「区分」と「X前年比」だし,データ件数は 区分が good, bad それぞれ 1049 件でしたよ。しかしまあ,なんで「数字データのカンマ処理」なんかしているんでしょうか?カンマなんかないようだし,余計なことしたために,「区分」も「X前年比」も character になってしまっている。 print 出力を確認しませんでしたか。&br;よって,以下のようにすると一応答えは得られます。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-01-16 (月) 21:02:56};
 > data <- read.csv("分析_v6.csv", header=TRUE)
 > summary(data)
    区分         X前年比     
  bad :1049   Min.   :0.790  
  good:1049   1st Qu.:1.020  
              Median :1.050  
              Mean   :1.058  
              3rd Qu.:1.090  
              Max.   :1.240  
 > library(rpart)
 > dt1 <- rpart(区分 ~ X前年比, data=data, parms=list(split="gini"), method="class")
 > dt1
 n= 2098 
 
 node), split, n, loss, yval, (yprob)
       * denotes terminal node
 
 1) root 2098 1049 bad (0.5000000 0.5000000)  
   2) X前年比< 1.065 1212  282 bad (0.7673267 0.2326733) *
   3) X前年比>=1.065 886  119 good (0.1343115 0.8656885) *
 > plot(dt1)
 > text(dt1, use.n=TRUE, xpd=TRUE)
&ref(rpart.png);~
分割点は,貴方の言う 1.1 ではなく,上の結果出力にあるように,正確には,1.065 ですね。で,それにより分類すると,
 > x = data$X前年比 < 1.065
 > table(data$区分, x)
       x
        FALSE TRUE
   bad    119  930
   good   767  282
のように,rpart の結果と同じになります(当たり前だけど)。&br;結果を良く読みましょう。
- ご丁寧にご教示頂きありがとうございます。私の方でも頂いたコードで試した結果、当然ですが同じ結果になり大変助かりました。rpartを実施したら必ずオブジェクトの中身を確認することに致します。追試までしていただき、重ねて本当に助かりました。ありがとうございました。 -- [[ddd_mmm]] &new{2017-01-16 (月) 23:33:03};
- ご丁寧にご教示頂きありがとうございます。私の方でも頂いたコードで試した結果、当然ですが同じ結果になり大変助かりました。rpartを実施したら必ずオブジェクトの中身を確認することに致します。追試までしていただき、重ねて本当に助かりました。ありがとうございました。 -- [[ddd_mmm]] &new{2017-01-17 (火) 09:48:33};

#comment

**numericとfactorを含む回帰分析 [#z32b1cdf]
>[[takapom]] (2017-01-16 (月) 04:31:48)~
~
初めて質問させていただきます。numericとfactorを含む回帰分析を実施しようとして100件のデータを読み込みました。以下のような当て嵌めを行い、call関数で呼び出そうとしたところ、一部しか認識していないようです。修正方法についてご教示頂けますと幸いです。
 > fit.all <- glm(y ~ x + f, data = d, family = poisson)
 > call: glm(formula = y ~ x + f, family = poisson, data = d)
 Error in call:glm(formula = y ~ x + f, family = poisson, data = d) : 
   NA/NaN argument
 In addition: Warning message:
 In call:glm(formula = y ~ x + f, family = poisson, data = d) :
   numerical expression has 30 elements: only the first used

//
- 本件、call以下は関数ではなく、summary(fit.all)の結果であったことが判明しました。 -- [[takapomm]] &new{2017-01-16 (月) 04:48:15};
- > summary(fit.all)の結果であった&br;いいえ,それは,fit.all を デフォルトの print が出力しようとした結果ですし,> call: ... ではなく,Call: ... から始まる出力のはずです。そもそも,glm でのエラーで,fit.all は求まってません。(細かいことではありますが),あなたのやったことがちゃんとわかるように(あなたの勝手な判断を加えずに),console から正確にコピー・ペーストしてください。x, y, f がどのようになっているかも。&br;ようするに,あなたの投稿記事では,なんとも返事のしようがないのです。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-01-16 (月) 08:37:37};

#comment

**Spearmanの相関係数に関して [#fd899b1b]
>[[大北]] (2017-01-12 (木) 16:13:11)~
~
初めてご質問させて頂きます。~
Rも統計も全くの初心者であり、非常にお恥ずかしいのですが、どなたかお力添えいただけますと幸いです。~
下記例のような数字が記入された行列(40000×100)が2つあります。行列1の1行目の数値と行列2の1行目の数値…という具合に、対応する行間の相関係数(Spearman)を一括で求めたいのですが、良い方法はありますでしょうか。~
独学で色々と試してはいるのですが、なかなか良い方法が見つからず困っております。~
何卒よろしくお願い申し上げます。
   症例1 症例2 症例3 症例4 症例5
 1     1     3     6     7    23
 2     2     4    56     5     2
 3     5     6    13     2     4
 4    34    23     4    13    14

//
- 大前提として,「行と列まちがえていないですよね」&br;間違えていないとして,「統計学データとして,データフレームを作成するときの鉄則(症例×変数)に反してます」ね(まあ,transpose して,保存し直せば(それだけではないかもしれないが)よいだけだけど)&br;まあ(また,まあだ),それはさておき,単純にやればよいでしょう(上手い方法が思いつかず,解法を求めて,時差があっての反応,というのは,無駄以外の何物でもない。&br;それぞれのデータを読み込んだ「行列」(本来なら,データフレームの方がよいのだが)を x, y とする~
先のデータを x として,以下のデータを y とする。
   症例1 症例2 症例3 症例4 症例5
 1     5     3     1     3    5
 2     1     2     5     2     7
 3     4     4     5     6     1
 4    81    42    10    53    51
結果は,以下のようになるだろう。
 > for (i in seq.int(nrow(x))) print (cor(x[i,], y[i,], method="spearman"))
 [1] 0
 [1] 0.1578947
 [1] -0.05129892
 [1] 0.6
たしかに
 > cor(c(2,4,56,5,2), c(1,2,5,2,7),method="spearman")
 [1] 0.1578947
になっていることが,確認できるであろう。【上手い方法より,確かな方法!】 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-01-12 (木) 21:01:39};
- 早々にご回答頂き、ありがとうございます。とても助かりました。試行錯誤するうちにデータフレームの行列が逆であることには気付いたのですが、行列変換もうまくできず困っておりました。本当に助かりました。重ねて御礼申し上げます。 -- [[大北]] &new{2017-01-13 (金) 07:29:54};
- > 行列変換もうまくできず&br;write.table(t(x), file="x.dat") のようにすれば,よいでしょう -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-01-13 (金) 09:37:44};
- 追記までして下さり、ありがとうございます。また不明点などあればご質問させて頂きたく存じます。よろしくお願い致します。 -- [[大北]] &new{2017-01-16 (月) 07:33:40};

#comment

**kmeansGap最適クラスター数 [#f39d8d12]
>[[aaa]] (2017-01-05 (木) 08:33:07)~
~
連続投稿申し訳ございません。~
~
kmeansGapにおいて、最適クラスター数を導出する方法をあるサイトより参考にし、使用しているのですが、Gap統計量のグラフを読み取り、最適クラスター数を決定した場合とそのサイトの方法での結果に差異がございます。~
具体的には下記プログラムです。
 x <- ClusteringMarketPotential[2:5]
 kg <- kmeansGap(x, nstart = 500)
 plot(kg)
 
 gap <- c()
 for(i in 1:100) {
   kg <- kmeansGap(x)
   nc <- length(kg$cluster$size)
   gap <- c(gap, nc)
 }
 par(ps=10)
 plot(table(gap), xlab="k:num.of clusters", ylab="freq.")
下段の記述において、  nc <- length(kg$cluster$size)により kmeansGap 法が決定した最適なクラスター数を取り出して、gap <- c(gap,nc) により最適とされたクラスター数をカウントするための、行列を作成していると理解しているのですが、そもそもnc <- length(kg$cluster$size)の部分が気になっております。~
kmeansGap法はその計算過程において最適クラスター数を求めているのでしょうか?あくまでも、Gap統計量を見るための方法と理解していたので混乱しております。~
教えて頂けると幸いです。~

//
- 以前の記事の返事もしましたけど,解を求めるに当たり乱数発生を伴っておるので,再現性はないということでは?&br;数回,数十回試みて,最もよいと思われる解を採用するというのがまっとうな行動でしょう。(本質がわかってないのかなあ)&br;参考ページというのも,その著者がどれだけわかってどれだけ詳しく書いているかは保証の限りではないし,結局は「使用者責任」です。せめて,オンラインヘルプくらい見てから使いましょう(願わくば,参照したページの,ここは間違いですよなんていう指摘をするくらいでないとね)。&br;また,記事の投稿法についても(ほかの人が適切に直してくれているということもわかっていない),進化が見られないしなあ。このページを隅から隅まで見てから投稿しなさいね。不思議な人だ。&br;trying several random starts (nstart> 1) is often recommended -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-01-05 (木) 21:18:26};

#comment

**kmeans法 [#q4244e94]
>[[aaa]] (2017-01-05 (木) 08:14:04)~
~
いつもご教授頂き大変ありがとうございます。現在下記の様にkmeans法を使っているのですが、
 #k means with Market Potential Data
 x <- ClusteringMarketPotential[2:5]
 cl <- kmeans(x,3,nstart=500) 
 cl$cluster
nstartの値をいくら変えても、~
実行結果が変わりません。~
~
初期値に依存のはずなのに何故だろうかと気になっております。~
~
教えて頂けると幸いです。~

//
- その説明にあるように,nstart を何通りか変えて,そのうちでもっとも普遍的に得られた解を示したと言うことでしょう。だからこそ,nstart をおおきくしなさいというこただったのでしょ?前の記事に対するコメントの通り。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2017-01-05 (木) 21:24:45};

#comment

**purrr::map()の挙動について [#n138fa22]
>[[kei]] (2016-12-31 (土) 05:56:35)~
~
いつもお世話になっています。~
~
以下のコードを実行する際に、rnorm()の第2引数である"mean"に1:3の~
vectorがリスト番号に応じて引数として適用される理由が分かりません。~
直観的には3つのリストにrnorm(x, mean = 0, sd = 1)の結果が出そうな気がします。~
<実行コード>
 set.seed(111)
 1:3 %>% map(rnorm, n = 5)
<実行結果>
 [[1]]
 [1]  1.2352207  0.6692641  0.6883762 -1.3023457  0.8291240
 
 [[2]]
 [1] 2.1402782 0.5025733 0.9898116 1.0515244 1.5060378
 
 [[3]]
 [1] 2.826326 2.593401 4.845636 3.394054 3.797529
いろいろ調べてみると以下のような動作が関連しているように思いますが、~
上記の事象の理解には至りませんでした。
 # 無名関数を適用
 set.seed(111)
 1:3 %>% map(function(x) rnorm(5, mean = x))
 
 # ラムダ式を適用
 set.seed(111)
 1:3 %>% map(~ rnorm(5, mean = .x))
よろしくお願いします。~

//
- rnorm(n=5 でつかうとき,最初の未定義引数が mean だからでしょう。~
 1:3 %>% map(rnorm, mean=0)
 1:3 %>% map(rnorm, mean=0, n=5)
などをやってみれば,明らか(というか,%>% の作用がわかってないんだろうけど)~
いつも,思うんだけど,(時流に流されて?)よくわからないものをつかうのは,やめたほうがよいのではないかな? -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-12-31 (土) 09:09:15};
- ご回答ありがとうございます。map()のことばかり気にしていました。パイプの動作も勉強しなおしたいと思います。~
追加で一点だけ質問させてください。上記のmap()を使ってrnorm(n = 5, mean = 0, sd = 1)を3つ出したい場合はどうするのでしょうか。よろしくお願いします。 -- [[kei]] &new{2017-01-01 (日) 06:27:56};
- 好きな引数 (以下例では n を使用) の値を3回繰り返して渡すだけです。rep(5, 3) %>% map(rnorm, mean = 0, sd = 1) -- [[通りすがり]] &new{2017-01-01 (日) 16:34:00};
- ご教授いただきましてありがとうございました。 -- [[kei]] &new{2017-01-02 (月) 05:46:50};

#comment

**kmeansGap [#a8dbd95d]
>[[aaa]] (2016-12-27 (火) 14:34:11)~
~
kmeansGap関数の結果をグラフにプロットすると~
毎回結果が変わってしまうのですが、~
なぜでしょうか?~
~
ご教授頂けると幸いです。~

//
- kmeansGap が呼び出している kmeans  関数で,初期値を sample.int 関数で設定しているからです。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-12-28 (水) 15:19:32};
- いつもありがとうございます。大変助かりました。 -- [[aaa]] &new{2017-01-05 (木) 08:36:21};

#comment

**GAP統計量 [#ec6fbf8a]
>[[aaa]] (2016-12-27 (火) 14:31:59)~
~
GAP統計量を使いたく、~
clusGap関数を持つlibrary(cluster)を~
インストールしたいのですが、~
既にlibrary(cluster)があるのか上手くいきません。~
~
現状のlibrary(cluster)にはclusGap関数のファイルが見つからず。~
~
ご教授頂けると幸いです。~

//
- どのように「上手くいかない」かを書くべし。あなたが,何をどうやったか,さっぱりわからないのだから。~
このページのヘルプにも書いてあるけど,あなたの OS の種類およびバージョン,R および cluster のバージョン(わからないなら,library(help=cluster) で表示されるはず)を書くべし。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-12-28 (水) 15:21:17};
- かしこまりました。 -- [[aaa]] &new{2017-01-05 (木) 08:36:58};
- 情報不足申し訳ございません。以後気をつけます。 -- [[aaa]] &new{2017-01-05 (木) 08:37:50};
- 情報不足申し訳ございません。以後気をつけます。 -- [[aaa]] &new{2017-01-05 (木) 11:02:03};

#comment

**Dunnett検定のp値で任意の桁数を求める [#u144c362]
>[[User]] (2016-12-16 (金) 11:26:22)~
~
http://minato.sip21c.org/medstat/how-to-multcomp.pdfを参考に、
 res1 <- aov(群2 ~ 群1, data=bpdown)
 summary(res1)
 library(multcomp)
 res2 <- glht(res1, linfct = mcp(medicine = "Dunnett"))
 confint(res2, level=0.95)
 summary(res2)
でDunnett検定を実行していますが、この方法では、自分の実力~
では、p値を任意の桁数で計算させることができません。~
他のやり方でもいいのですが、p値を任意の桁数で計算させる~
ことはできますか?よろしくお願いします。~

//
- 表示値 (特にsummaryで表示される値) は丸められた値である。format() ないし options(digits) で更に下の桁まで表示させることができる。 -- [[通りすがり]] &new{2016-12-16 (金) 13:51:34};
 s_res2 <- summary(res2)
 s_res2$test$pvalues    # p値はここに入っている (この時点でsummaryの値より4桁下まで表示される)
 
 # 出力がcharacterとなるが、formatが一番簡単
 format(s_res2$test$pvalues[1], digits = 15)  # [1] "0.0315125323146122"
 
 # options()で表示桁数を弄っても求まる
 options(digits = 15)
 s_res2$test$pvalues[1]   # [1] 0.0315125323146122
 options(digits = 7)      # 元に戻す
- うまくできました。ご教授、ありがとうございます。 -- [[User?]] &new{2016-12-17 (土) 13:40:35};

#comment

**パイプ演算子%>%が使えない [#d864dba2]
>[[ゆう]] (2016-12-09 (金) 11:21:59)~
~
お世話になります。~
~
パイプ演算子%>%が使えません。~
~
Error: could not find function "%>%"~
のメッセージが出ます。~
~
magrittrパッケージはインストールしたのですが、~
ほかに実施することがあるのでしょうか?~
~
※ちなみにpipeRの%>>% も同様に使えませんでした。~
(pipeRパッケージはインストールしました)~
~
初歩的な質問で恐縮ですがよろしくお願いします。~

//
- install.packages はしたけど,library してないという落ちですか? --  &new{2016-12-09 (金) 17:46:16};
- その落ちでした!ありがとうございました! -- [[ゆう]] &new{2016-12-12 (月) 14:09:20};

#comment

**多変量GARCHの閾値モデル化 [#a2050a1a]
>[[PPAP]] (2016-11-30 (水) 23:28:40)~
~
よろしくお願いします。~
~
【質問】~
 多変量GARCH(multivariate garch)を閾値(threshold)モデル化したもの、~
つまり、M(multivariate)GARCHモデル、BEKKモデル、CCCモデル、DCCモデル等の~
閾値モデル版を扱うことのできるパッケージもしくはコードを記載した~
webページ等はありませんでしょうか?~
~
(備考)~
  多変量時系列モデルの代表的なモデルであるVARについては、~
 これを閾値モデル化したTVAR(threshold-VAR)がパッケージ(tsDyn)に機能~
 として存在しているようですが、自分がいかに調べても、多変量GARCHで~
 これを閾値化したパッケージやコードが見つかりませんでした。~
  ~
 どなたかご存知の方はおられませんでしょうか。~
 どうぞよろしくお願い申し上げます。~

//

#comment

**twitterのプロフィールのデータ収集について [#pf83e51e]
>[[page]] (2016-11-16 (水) 17:36:23)~
~
はじめて質問させてもらいます。~
よろしくお願いします。~
~
プロフィールのテキストデータの収集について教えてください。~
「twitteR」を使えば、タイムラインのツイートなどは収集できると思うのですが、プロフィールのテキストデータは収集可能でしょうか。「twitteR-CRAN」を読んだのですが、見つかりませんでした。APIの連携は済んでおります。~
~
安倍首相のTwitterアカウントであれば「衆議院議員安倍晋三(あべしんぞう)の公式twitterです。 Prime Minister of Japan. Leader of Liberal Democratic Party.」の部分です。~
~
もし、「twitteR」で可能であれば、使用例をお示しいただけますと幸いです。~
また、違うパッケージで可能であれば、教えてくれますと幸いです。~

//
- setup_twitter_oauth(...) → user<-getUser("abeshinzo") → user$description -- [[wakakumo]] &new{2016-11-17 (木) 16:26:46};

#comment

**R3.3.2のcrtl+pが印刷になってしまいます [#i7cb1680]
>[[tori]] (2016-11-16 (水) 17:02:56)~
~
すみません。~
~
Windows10(64bit)にR-3.3.2-win.exeをインストールしました。デスクトップに~
できたアイコンをダブルクリックして起動したのですが(R console)、~
crtl+pで一つ前に実行したコマンドを出そうとすると印刷になってしまいます。~
ctrl+nもだめでした。~
~
ヘルプの項のコンソールを見るとctrl+pとctrl+nは履歴と書いてあるのですが、~
ファイルの項の印刷はctrl+pとなっており、こちらの動作をしているようです。~
~
履歴の移動は矢印キーでもできるとはいえ、できればctrl+pとnを使いたいので~
すが、設定を変更する場所が見つかりませんでした。~
~
そこで、ctrl+pとnで履歴を移動できるようにする方法orヒントをご存じの方、~
お教えください。よろしくお願いします。~

//

#comment

**プロキシサーバーへの接続 [#w34c3ff8]
>[[PQP]] (2016-11-08 (火) 00:42:17)~
~
お世話になります。~
~
Win 7, 32bitでR 3.0.2を使用しています。~
プロキシサーバーを経由する必要があるため、起動ディレクトリの.RprofileにSys.setenv(http_proxy="プロキシサーバアドレス:ポート")と記載しておき、パッケージの更新時にはアカウントを入力してインターネットに接続できていました。~
しかし、R 3.3.1をインストールしてパッケージの更新をしたところ、アカウントの入力画面が表示されず以下のようなエラーメッセージが表示されました。
 to download mirrors file ( URL
 'https://cran.r-project.org/CRAN_mirrors.csv' を開けません ); using local
 file 'C:/PROGRA~1/R/R-33~1.1/doc/CRAN_mirrors.csv'
 警告:  リポジトリー https://cran.ism.ac.jp/src/contrib に対する索引にアクセスできません :
  URL 'https://cran.ism.ac.jp/src/contrib/PACKAGES' を開けません
 警告:  リポジトリー http://www.stats.ox.ac.uk/pub/RWin/src/contrib に対する索引にアクセスできません :
  URL 'http://www.stats.ox.ac.uk/pub/RWin/src/contrib/PACKAGES' を開けません
 警告メッセージ:
 download.file(url, destfile = f, quiet = TRUE) で:
  cannot open URL 'https://cran.r-project.org/CRAN_mirrors.csv':
 HTTP status was '407 Proxy Authentication Required'
Sys.getenv("http_proxy") で.Rprofile通りの設定になっていることは確認できたのですが、最近のRはプロキシサーバーの設定が変更になったのでしょうか。~
どのようにすればインターネットに接続できるかご教示宜しくお願いします。~

//
- install.packages("package_name", method="libcurl") ではどうでしょう? -- [[通りすがり]] &new{2016-11-09 (水) 16:13:38};
- 試してみましたが、同様のエラーが生じるだけでした。「Proxy Authentification」のウィンドウの起動ができないためにプロキシサーバーを通過できないものと思われます。 -- [[PQP]] &new{2016-11-09 (水) 17:43:38};
- https://*** にアクセスしているようです。https_proxy(http_proxyではなく)の設定はしているでしょうか? -- [[荒]] &new{2016-11-09 (水) 21:14:24};
- いえ、http_proxyとして設定しています。念のためhttps_proxyとしてみましたが、同様に「Proxy Authentification」のウィンドウの起動がされませんでした。 -- [[PQP]] &new{2016-11-10 (木) 15:46:50};
- 認証ありプロキシのようですので、以下のホームページを参考に設定してみてはいかがでしょうか。 http://claimant.cocolog-nifty.com/blog/2013/12/r-5179.html -- [[荒]] &new{2016-11-11 (金) 00:28:58};
- 同様のエラーが生じました。R 3.0.2は問題ないのに、R 3.3.1ではできないのはなぜでしょうか。 -- [[PQP]] &new{2016-11-11 (金) 09:30:30};
- http_proxy_user=ask --  &new{2016-11-11 (金) 13:32:05};
- 比較的最近に追加された解答なので参考になるかもしれません http://stackoverflow.com/a/40044773/6384423 -- [[通りすがり]] &new{2016-11-11 (金) 13:35:08};
- ありがとうございます。ご提示いただいた方法をすべて試しましたが同じ結果でした。Rの開発者たちに質問してみようと思います。 -- [[PQP]] &new{2016-11-14 (月) 20:49:15};
- かなり下に以下のようなコメントがありました。参考になれば。:R3.2.2からWindowsでproxy接続(特に認証要の場合)では、setInternet2(FALSE)としないと接続ではじかれる場合があります。リリース時のアナウンス通りですが、見逃している方のために。 -- tanaka? 2015-09-21 (月) 21:24:54 --  &new{2016-11-17 (木) 16:42:05};
- setInternet2(FALSE)と入力するとエラーになりました。&br;
Rの開発者たちに質問したところ、以下のようにすることで解決できました。ご参考まで。 &br;
Sys.setenv(http_proxy="http://proxyserver:port") &br;
options(repos="http://cloud.r-project.org/") &br;
options(download.file.method="internal")  -- [[PQP]] &new{2016-12-11 (日) 13:56:10};

#comment

**leafletでのコロプレス図とマーカーについて(3) [#wcaefe71]
>[[TAKA?]] (2016-10-27 (木) 07:43:50)~
~
詳しく書いてみました。
よろしくお願いします。
 library(leaflet)           
 library(RColorBrewer)      
 library(maptools)          
 library(knitr)
 
 #「JPN_adm1.shp」は「http://www.gadm.org/country」から
 file <- "JPN_adm1.shp"
 
 # データの準備
 # 緯度経度なので+projにlonglatを指定
 # SpatialPolygonDataframeとして読み込み
 pj <- CRS("+proj=longlat +datum=WGS84")
 Jpn <- maptools::readShapePoly(file,proj4string = pj,IDvar="NAME_1")
 
 # データ部の下から10レコードを表示
 Jpn@data %>% tail(.) %>% kable()
 
 # ポリゴン部一つ目を表示
 Jpn@polygons[1]
 
 #「http://www.gadm.org/country」から取得したデータに人口密度(PD)を足したデータ
 # 「JPN_adm1.shp」で「Hyナ紅o」となっているのであわせた
 jpad <- read.table("JPN_adm1.csv", header=TRUE, sep=",", na.strings=c("", "NA"), 
    dec=".", fill=TRUE, quote="\"", strip.white=TRUE)
 
 # 都道府県名「NAME_1」でmerge
 Jpn <-  merge(Jpn,jpad,by="NAME_1")
 
 #今回使用する以下のものに整理
 # ・ NAME_1 = 都道府県名
 # ・ PD     = 人口密度(人/km2)
 
 #lng,latに代表点を格納
 Jpn.d<- data.frame(PREF = Jpn$NAME_1,     #各小地域名称
                     PD = Jpn$PD)           #人口密度
 Jpn@data <- Jpn.d
 Jpn@data %>% tail(.) %>% kable(.,format="markdown")
 
 # コロプレス図( 離散化:等分法)
 # 人口密度を%で表示しているのは変ですがご容赦
 pal_q <- leaflet::colorQuantile(
   palette = "Reds",
   domain = Jpn@data$PD, n=10)
 
 m <- leaflet::leaflet(Jpn) 
 m  %>%
   addProviderTiles(provider = "OpenStreetMap.BlackAndWhite") %>% 
   addPolygons(stroke = FALSE,
               fillOpacity = 0.9, 
               color = ~pal_q(Jpn.d$PD)) %>% 
   addLegend(position='bottomright', pal=pal_q, values=~PD,title="人口密度(%)",
             labels=~classlabel$label)
希望としては上記でできる地図と下記でできる地図を合体したい~
コロプレス地図上で、地点表示をしたい
 df <- data.frame(
     id = 1:5,
     lng = rnorm(5,mean=135,sd=0.5),
     lat = rnorm(5,mean=35,sd=0.5),
     pop = c("kosaki","chitoge","tsugumi","marika","yui"))
 m <- leaflet(df) %>% addTiles()
 m %>% 
     addMarkers(lng=~lng, lat=~lat, popup=~pop, label=paste(df$lng, df$lat, sep=","))

//
- 途中でエラーが出てしまい,追試できない --  &new{2016-10-27 (木) 08:18:46};
 > Jpn <- maptools::readShapePoly(file,proj4string = pj,IDvar="NAME_1")
  getinfo.shape(filen) でエラー: Error opening SHP file
- >途中でエラーが~~
それはファイルパスの問題です、自身の環境に合わせてfile <- "JPN_adm1.shp"を書き直せば通ると思います。~
[解答]~
以下のように最後の行を付け加えるだけです。#lng,latに代表点を格納、の下りはなくても困らないため、省略し、一部コードを変更しています。~
なお、addMarkers()のlabelは現時点では開発版leafletのみの引数ですので、安定版ですとエラーがでます。 -- [[通りすがり]] &new{2016-10-28 (金) 01:44:06};
 
 m <- leaflet(Jpn) 
 m  %>%
   addProviderTiles(provider = "OpenStreetMap.BlackAndWhite") %>% 
   addPolygons(stroke = FALSE,
               fillOpacity = 0.9, 
               color = ~pal_q(Jpn@data$PD)) %>% # Jpn.d$PD を Jpn@data$PD に変更しています
   addLegend(position='bottomright', pal=pal_q, values=~PD,title="人口密度(%)",labels=~classlabel$label) %>% 
   addMarkers(lng=~lng, lat=~lat, popup=~pop, label=paste(df$lng, df$lat, sep=","), data = df) ## この行を加える
#comment

**leafletでのコロプレス図とマーカーについて(2) [#w9b84cb5]
>[[TAKA?]] (2016-10-24 (月) 00:35:52)~
~
前回の質問があいまいだったので、補足します。shpファイルからreadShapePoly関数で読んだデータと、緯度・経度・地点名のデータが、当然ですが並列には扱えません。前者(○○)は地図にプロットする場合leaflet::leaflet(○○)、となっていますが、後者(△△)はleaflet(△△)です。Polygonファイルと単純な緯度経度ファイルの違いだと思うのですが、後者を前者の関数の一部のような形式で扱えないのかと思っています。この質問で言っていること全体が間違っているのかもしれませんが、よろしくお願いします。~

//
- まだまだ,具体的じゃないですよ。せめて,ほかの人があなたがやったこと(やろうとしている途中段階)を再現できるような環境,どのようなライブラリを使うかとか,どのようなデータをどのようなプログラムで処理しようとしたかくらいは示すべきじゃないか?(ノーベル賞ものの先進的研究じゃないのなら)~
leaflet::leaflet(○○)とleaflet(△△)って,leaflet って関数が2つ以上在るわけではなくって,本質的に同じ関数を呼んでるんじゃない?~
このようなことに対応できないようなら,コメントも望み薄じゃないかな?私には無理だわ。 --  &new{2016-10-24 (月) 20:51:35};

#comment

** leafletでのコロプレス図とマーカーについて [#k3292cf3]
>[[TAKA?]] (2016-10-23 (日) 15:52:03)~
~
「https://book.mynavi.jp/manatee/detail/id=59406」を参考に、leafletで全国の都道府県別の人口密度のコロプレス図を描きました。希望としては、その地図に、「https://kazutan.github.io/JapanR2015/leaflet_d.html」で解説されているように、複数地点のマーカー(サークル等)を追加し、labelやpopup機能なども使用したいです。しかし、方法がわかりません。よろしくお願いします。~

//

#comment

**var.testの95%信頼区間に関する質問です [#n3733ad1]
>[[yoshida931]] (2016-10-21 (金) 19:18:57)~
~
 x <- c(12,18,15,14,16,17,15,16,14,13,12)
 y <- c(9,10,12,8,11,10,8,9,12,13,11,10)
 var.test(x, y)
 95 percent confidence interval:
 0.4216858 5.4487216
次の式との違いが理解できません
 x <- c(12,18,15,14,16,17,15,16,14,13,12)
 y <- c(9,10,12,8,11,10,8,9,12,13,11,10)
 qf(0.05, length(x)-1, length(y)-1)
 qf(0.975, length(x)-1, length(y)-1) 
 95 percent confidence interval:
 0.2728577 3.525672
どうか宜しくお願いいたします~

//
- qf(0.05, length(x)-1, length(y)-1) は qf(0.025, length(x)-1, length(y)-1) であるのはおいておくとして,~
実際の分散の値が計算式のどこにも出てこないのがそもそもおかしいと思いませんでしたか?~
stats:::var.test.default を見ればすぐにわかりますが,正しい計算は,
 > x <- c(12,18,15,14,16,17,15,16,14,13,12)
 > y <- c(9,10,12,8,11,10,8,9,12,13,11,10)
 > a <- var(x) / var(y)
 > a / qf(0.025, length(x)-1, length(y)-1)
 [1] 5.448722
 > a / qf(0.975, length(x)-1, length(y)-1) 
 [1] 0.4216858
です。~
たとえば,http://www-cc.gakushuin.ac.jp/~20130021/mathsta/chap9.pdf の 61 ページ 「5. 2つの正規母集団の分散比の区間推定」にも数式あり -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-10-22 (土) 05:18:52};
- ありがとうございました。明確なご回答をいただき感謝しております。Rの質問というより、統計の初歩的な質問だったのですが、ご助言いただき助かりました。 -- [[yoshida931]] &new{2016-10-22 (土) 21:15:28};

#comment

**sapply(x, RMeCabC)時の予期せぬエラー [#s9b7dacf]
>[[hashi]] (2016-10-20 (木) 12:59:23)~
~
お世話になります。~
1000000件程度のレビューデータの形態素解析を行うためにRMeCabを用いています。~
一息に行うには難しいと思いましたので10000件にづつに分割してsapplyを用いることで行っているのですが、sapplyの際に時折「予期せぬエラー」が発生してR.guiが停止してしまうことがあります。~
(RStudioを用いている時にはR Session Aborted と表示されます)~
~
Rを再起動して再び走らせるとうまく走るようですが、しばらくするとまた同様にRが停止してしまいます。~
~
Rを止めることなく、解析を行うためにはどのような対策が考えらえれますでしょうか?ご教授いただければ幸いです。~
~
コードは以下です。
 > # x は10000件のレビューテキストが入っているベクトルです (サイズは2000KB程度)
 > for(i in 1:100){
 >   load(paste0("x", i, ".Rdata"))
 >   a <- sapply(x, RMeCabC)
 >   save(a, file=paste0("a", i, ".Rdata"))
 > }
 >
 > sessionInfo()
 R version 3.3.1 (2016-06-21)
 Platform: x86_64-w64-mingw32/x64 (64-bit)
 Running under: Windows >= 8 x64 (build 9200)
  
 locale:
 [1] LC_COLLATE=Japanese_Japan.932  LC_CTYPE=Japanese_Japan.932 
     LC_MONETARY=Japanese_Japan.932 LC_NUMERIC=C                  
 [5] LC_TIME=Japanese_Japan.932    
  
 attached base packages:
 [1] stats     graphics  grDevices utils     datasets
     methods   base     
  
 other attached packages:
 [1] RMeCab_0.99994
  
 loaded via a namespace (and not attached):
 [1] tools_3.3.1
なお、Rの再インストールやRMeCabの再インストール等は試してみましたが、改善はされませんでした。load, saveでは問題が生じていないことも確認しました。~
どうぞよろしくお願いいたします。~

//
- 「load, saveでは問題が生じていない」のは,確かなのでしょうか?だとしたら,RMecabC の問題かな? メモリーリークかなんかあるのなら,10000 件ではなく 5000件とか2500件単位で分析しても同じエラーがでるかどうか... --  &new{2016-10-20 (木) 18:14:35};
- もしかすると forループの最後に  rm(x); rm(a);  gc(); gc() でも入れれば改善される...やも? -- [[通りすがり]] &new{2016-10-21 (金) 11:00:31};
- cat()で確認を行ったところ、何回目かのsapply(RMeCabC)で止まることを確認しました。止まるまでの反復の回数は不規則なのですが、止まってすぐに回した場合はすぐに止まることが多かったです。 -- [[hashi]] &new{2016-10-21 (金) 11:55:47};
- traceback() で原因箇所を特定すべし --  &new{2016-10-21 (金) 12:05:16};
- 試しにsapply()部をforで書き直してみたり、1000データセットごとにしてみましたが、途中で停止してしまいました。RMeCabC()の問題か、私の環境に特異な問題なのかもしれません。gc()の効果については確認中です。ご助言ありがとうございます。 -- [[hashi]] &new{2016-10-21 (金) 12:07:37};
- エラーではなくRセッションが停止してしまいますので、traceback()は使えないと考えていました。確認してみます。ありがとうございます。 -- [[hashi]] &new{2016-10-21 (金) 12:13:23};
- rm()とgc() を組み合わせる方法で解決できました。ありがとうございます。 -- [[hashi]] &new{2016-10-21 (金) 18:34:55};

#comment

**2つの配列を1つの配列にまとめる方法 [#r80cfc5c]
>[[まさ]] (2016-10-06 (木) 11:07:30)~
~
お世話になります。~
配列に関してですが、2つの配列を行列の積を求めることで1つにまとめる方法をお教えいただけないでしょうか?
 > a<-array(1:8,dim=c(2,2,2))
 > a
 , , 1
 
      [,1] [,2]
 [1,]    1    3
 [2,]    2    4
 
 , , 2
 
      [,1] [,2]
 [1,]    5    7
 [2,]    6    8
 
 > b<-array(1:8,dim=c(2,2,2))
 > b
 , , 1
 
      [,1] [,2]
 [1,]    1    3
 [2,]    2    4
 
 , , 2
 
      [,1] [,2]
 [1,]    5    7
 [2,]    6    8
 
 > c<-array(a%*%b,dim=c(2,2,2))
 > c
 , , 1
 
      [,1] [,2]
 [1,]  204  204
 [2,]  204  204
 
 , , 2
 
      [,1] [,2]
 [1,]  204  204
 [2,]  204  204
となり、計算がうまくいきません。~
どこが間違えているかご指摘よろしくお願いします!~

//
- 「2つの配列を行列の積を求めることで1つにまとめる」というのが何なのかよくわからないけど,以下のような結果でよいの?~
すぐ下のコメントでも書いたけど,(プログラムを書くときに,カンマの後や演算子の前後に適切に空白を置くようにするとよいです。グッチャリ書くと,自分でもよくわからなくなるでしょう。見通しが悪いと,バグも発見しにくいものです。)~
ページの上の方の青い●が4つ並んでいるうちの最初の項目~
  新規投稿欄: --- その前に,「投稿における注意事項」を読んでから!~
ってのを,読みましたか?~
さらにその「投稿における注意事項」ページの中に,~
  投稿する前にまず [heart] 投稿文書の書式 [heart] を読んでください」~
というのもあるんですよね。読まずに投稿して,「変になちゃったごめん」って言われてもなあ。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-10-06 (木) 11:33:50};
 > array(sapply(1:2, function(i) a[, , i] %*% b[, , i]), dim=c(2, 2, 2))
 , , 1
 
      [,1] [,2]
 [1,]    7   15
 [2,]   10   22
 
 , , 2
 
      [,1] [,2]
 [1,]   67   91
 [2,]   78  106
- 回答ありがとうございます。注意事項読んでなかったです。読ませていただきます。すいません -- [[まさ]] &new{2016-10-06 (木) 12:08:25};

#comment

**回帰直線 [#w17edea1]
>[[初心者]] (2016-10-05 (水) 12:13:17)~
~
いつもお世話になっております。~
次のとおり回帰分析を行ったのですが、回帰直線の形状がイメージと異なるような気がします。もう少し傾いた(右上がりの45度線のような)形状になると思われるのですが、いかがでしょうか。~
R二乗値は0.63あるのですが、その割にはあまりにも回帰直線が当てはまっていない気がします。
 a = c(-10.22308777, -17.73631427, -31.26787059, -30.0144283, 16.00892923,
       -0.069389969, -1.527697676, 40.23164602, 17.84427993, 51.90862367,
       32.43250902, -14.69527371, -21.51305243, 2.467123024, -1.591029265,
       -6.002531197, -5.528871379, -20.72354649)
 b = c(3.89776009, -1.599860574, -4.454146619, -6.591765968, -0.790181177,
       2.356401065, 0.284653276, 8.520993351, 2.143995797, 4.920336488,
       2.454386261, -1.756563062, -2.934179195, -2.443421907, -0.75099722,
       0.213094238, -0.430802605, -3.039698906)
 reg = lm(formula = a ~ b)
 plot(a, b)
 abline(reg)
 summary(reg)

//
- lm と plot で,従属変数と独立変数の指定の仕方を再確認してください。lm(formula=a~b) がやりたいことならば,plot(a ~ b) とするか plot(b, a) としないといけません。(プログラムを書くときに,カンマの後や演算子の前後に適切に空白を置くようにするとよいです。グッチャリ書くと,自分でもよくわからなくなるでしょう。見通しが悪いと,バグも発見しにくいものです。) -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-10-05 (水) 13:40:34};

#comment

**アーラン分布へのあてはめ(fitdistr) [#b7edaa5a]
>[[TAKA]] (2016-10-05 (水) 12:07:38)~
~
ある分布は待ち時間に関するもので、アーラン分布が予測され、ほかのプログラムでそのことが実証されています。検算の意味もあり、「R」でアーラン分布へのあてはめを実施しようと思い、調べました。~
結果、fitdistrでガンマ分布へのあてはめが可能だとわかりましたが、shcapeを自然数に限定する方法がわかりません。また、fitdistrで計算させたあと、出てきたshapeの近傍の自然数に設定して、再計算をさせればいいと思ったのですが、その方法もわかりません。ご教授ください。~

//
- fitdistr の example の二番目に,t分布への当てはめ例があり,df を固定する場合とdfも含めて推定する場合のやり方が書いてあります。gamma 分布のときは,fitdistr(x, "gamma", shape=2) と指定するとエラーになるので,fitdistr(x, "gamma", list(rate=0.3), shape=2) とでもやればよいようです。ただ,制約があるときには,推定途中でエラーや警告が出ることも多いようですが。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-10-05 (水) 14:06:47};
- 御指摘の方法で、完全にうまくいきました! ありがとうございます。 -- [[TAKA]] &new{2016-10-05 (水) 18:22:03};

#comment

**ベクトルから配列の作成について [#idf2a9b9]
>[[まさ]] (2016-10-03 (月) 18:36:06)~
~
お世話になります。~
行列の各要素にそれぞれベクトルを挿入して配列を作るにはどうしたらよろしいのでしょうか?~
例えば、
 a<-c(1,2,3,4,5)
 b<-c(6,7,8,9,10)
 c<-c(11,12,13,14,15)
 d<-c(16,17,18,19,20)
というベクトルを使って、
 [1]
 | 1 11 |
 | 6 16 |
 
 [2]
 | 2 12 |
 | 7 17 |
といった感じで作っていきたいのですが、、、、~
R言語だけでなくプログラミングに対する知識も浅いので、丁寧にご説明いただけると光栄です。~
なにとぞよろしくお願いします。~

//
- 古い Q&A 15 を使わないで!。&br;結果はリストで返しますが(それぞれの行列はリストの要素),以下の一行でできます。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-10-03 (月) 19:12:16};
 lapply(data.frame(rbind(a, b, c, d)), matrix, nrow=2)
- 結果を配列で欲しいのならばこちらをどうぞ; array(rbind(a, b, c, d), dim=c(2,2,5)) -- [[通りすがり]] &new{2016-10-04 (火) 00:15:15};
- 返信ありがとうございます!古いQ&Aを使ってしまい申し訳ありませんでした -- [[まさ]] &new{2016-10-04 (火) 11:26:21};

#comment

**Rの脆弱性について [#e5750086]
>[[Hiro]] (2016-09-28 (水) 15:06:05)~
~
お世話になります。~
~
R3.1.0を使用して医療統計を行い、日本の雑誌に論文を投稿したところ、「統計解析ソフトRの解析能力について、ソフトとしての脆弱性、信頼性の問題について考察し、参考文献を追記してください。」とのコメントがございました。~
これまで、海外への投稿論文でそのようなことを指摘されたことがありませんでしたし、あたりまえに使用していましたので、どのように回答してよいのか悩んでおります。~
~
統計的なことでなくて申し訳ないのですが、脆弱性や信頼性に関してどのように回答するのが適切でしょうか?~

//
- なぜ今頃, R-3.1.0なのか?と言う意味なのかもしれません. 脆弱性や信頼性と言う意味ではR-3.1.0からだと, [[NEWS:https://cran.ism.ac.jp/doc/manuals/r-release/NEWS.html]]にもあるようにバグフィックスが現時点でもそれなりの数にのぼりますし, 外部ライブラリのバグやセキュリティホールなどもビルド時にチェックしてビルドしているので流石に2年も前のものはいかがなものかと思います. 一方で計算センターなどの環境では入れっぱなしの放置状態と言うケースが散見されますから(もしかしたらひそかにバックポートしている小人がいるところもあるかもしれませんが)そういった環境のせいなのかもしれません. 信頼性についてはマルチプラットフォームで制限なく誰でも検証可能(医療統計だとデータは慎重を要するかもしれませんが)な点かと思います. 自身の所属が変わると追試ができなくなる可能性とかにもRは強いとは思います. 参考文献については以前なにか見たような記憶があるのですがちょっと思い出せませんでしたw あまり参考になりませんが^^; -- [[なかま]] &new{2016-09-30 (金) 08:55:58};
- アメリカ食品医薬品局(FDA)でもRを採用しているというのは、有力な証拠となりませんか -- [[ふぁど]] &new{2016-10-03 (月) 13:11:04};
- あー, FDAとかの関係の文章があったなーと思い出して...R財団公式文献でいうと, [[R-FDA:https://www.r-project.org/doc/R-FDA.pdf]]と[[R-SDLC:https://www.r-project.org/doc/R-SDLC.pdf]]かなぁ. でも雑誌の方の考察の範囲というか視点が私にはちょっとわかりかねます.^^; -- [[なかま]] &new{2016-10-03 (月) 19:04:33};
- 査読者の指摘を意訳すると、おそらく「SASやSPSSのような信頼されているソフトウェアを使うのではなく、なぜ責任保証がないオープンソースのRを医療統計で使うのか、その根拠を示せ」ということではないかと想像します。脆弱性については[[Open-source software security:https://en.wikipedia.org/wiki/Open-source_software_security]]を読んで、例えば[[Increased security through open source:https://arxiv.org/pdf/0801.3924.pdf]]のようなものを引用するとか(arxivが医療系で根拠として認められるかどうかは怪しいけど)。信頼性は、第3機関による評価が見つかればそれを提示すればよいと思いますが難しそうですね。PubMedで探しても[[Wikipediaを引用しているレベルのもの:https://www.ncbi.nlm.nih.gov/pubmed/26793368]]しか見つかりません。 -- [[谷村]] &new{2016-10-03 (月) 22:38:52};
- ありがとうございます。まずは新しいVerで計算して、Increased security through open sourceの件検討してみます。お礼が遅くなってしまいすみませんでした。 -- [[Hiro]] &new{2016-11-02 (水) 01:51:03};

#comment

**polygon関数 [#z7385c1c]
>[[Piro]] (2016-09-23 (金) 14:28:02)~
~
いつもお世話になっております。~
対数正規分布のグラフを作成しようとしているのですが、polygon関数で一部を塗りつぶそうとしても、うまく描画できません。~
使用環境はR version 3.3.1 です。~

 data<-c(94.257,54.921,60.819,60.666,105.699,42.525,117.238,42.733,53.808,47.220,
 50.901,41.801,44.790,38.811,60.793,39.692,38.387,45.992,69.380,40.316,41.333,
 55.521,72.151,80.017,64.362,113.580,131.497,43.741,44.435,81.991,53.107,58.892,
 45.898,45.947,73.002,83.237,64.322,57.769,69.487,54.550)
 curve(dlnorm(x,meanlog=mean(log(data)),sdlog=sd(log(data))),0,150)
 xvals=seq(0,39.391,length=40)
 dvals=dnorm(xvals)
 polygon(c(xvals,rev(xvals)),c(rep(0,40),rev(dvals)),col="grey") #重ならない

//
- すみません。下から二行目は dvals=dlnorm(xvals) -- [[Piro]] &new{2016-09-23 (金) 14:32:43};
- すみません。下から二行目は dvals=dlnorm(xvals) -- [[Piro]] &new{2016-09-23 (金) 14:43:08};
- dvals=dlnorm(xvals,meanlog=mean(log(data)),sdlog=sd(log(data))) でしょ?&br;最後の行は,polygon(c(xvals, 39.31, 0), c(dvals, 0, 0), col="grey") で十分ではある。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-09-23 (金) 18:41:49};
- どうもありがとうございました。最後の行の訂正も、「なるほど!」です。大変勉強になりました。 -- [[Piro]] &new{2016-09-25 (日) 10:13:12};

#comment

**複数の関数にパイプ(%>%)するときの挙動 [#n46079f9]
>[[kei]] (2016-08-30 (火) 05:31:12)~
~
いつもお世話になります。~
magrittrパッケージを使って複数の関数にパイプしたいと思っていますが、結果がコンソールに表示される場合とされない場合があるように思われます。debug(`%>%`)などでデバッグを試みたのですが、%>%の中身は現在の私には難しすぎて理解しきれません。
 # str()とsummary()の結果がコンソールに表示される⇒問題なし~
 iris %>% {
   str(.)
   summary(.)  
 } 
 # str()の結果はコンソールに表示されるがsummary()の結果が表示されない⇒疑問点~
 iris %>% {
   summary(.)  
   str(.)
 } 
 # print()でコンソール出力を明示すると表示される
 iris %>% {
   print(summary(.))  
   print(str(.))
 }  
 # 関数は動いているようで、以下の場合は変数が読み込まれます。
 iris %>% {
   x <<- summary(.)  
   y <<- str(.)
 } 
この点について原因や考え方をご存知の方がいらっしゃいましたらアドバイスをお願いします。~
よろしくお願いします。~

//
- 初投稿で表示がおかしくなってしまいました。申し訳ありません。 -- [[kei]]&new{2016-08-30 (火) 05:37:02}  ★自分で直すべき;
- { } で表される複文は,最後の関数の実行結果を返す。実行結果が「あれば」print() に引き継がれる。
 > {1; 3; 5} # 数値も「式」である
 [1] 5
 > {1; sqrt(3); invisible()}
 > 【何も表示されない】
summary() の戻り値はその結果であるが,str( ) の戻り値は 「NULL」str does not return anything であり,コンソールに表示しているのは print() によるものではない。&br;{str(.); summary(.)} は str() によるコンソールへの出力を行い,summary() の返す結果を print() で出力。&br;{summary(.); str(.)} は summary() の結果は捨てられ,str(.) による出力があり,複文の結果は NULL なので出力されない。str(iris) と print(str(iris)) では,後者の最終行に NULL と表示されるという違いがある。&br;以下も原理・説明は同じ。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-08-30 (火) 08:58:05};
- ご回答いただきましてありがとうございます。また、投稿の修正もありがとうございます。str()のヘルプなども併せて確認して、スッキリと理解できました。 -- [[kei]] &new{2016-08-31 (水) 04:58:40};

#comment

**rpartオブジェクトの編集について [#b979b342]
>[[yu]] (2016-08-23 (火) 20:44:26)~
~
いつもお世話になります。~
rpartのpredictで出力される確率を自分で編集したいと思っています。~
rpartのドキュメントを見て、~
$frame$dev~
などを変更してみたのですが、predictの結果には寄与していないようです。~
どなたか、predict結果に任意の確率を出力する方法をご存知の方はいませんでしょうか。~

//
- > predict結果に任意の確率を出力&br;って,なにをどのように出力したいの?実例を示しなさいとね。&br;新しい説明変数の場合の確率を求めたいというなら,predict 関数の newdata 引数を使うんですけどね。rpart の example にある kyphosis を使ってやる方法を示しておきますが... -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-08-23 (火) 22:06:59};
 > library(rpart)
 > head(kyphosis)
   Kyphosis Age Number Start
 1   absent  71      3     5
 2   absent 158      3    14
 3  present 128      4     5
 4   absent   2      5     1
 5   absent   1      4    15
 6   absent   1      2    16
 > fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
 > head(predict(fit))
      absent   present
 1 0.4210526 0.5789474
 2 0.8571429 0.1428571
 3 0.4210526 0.5789474
 4 0.4210526 0.5789474
 5 1.0000000 0.0000000
 6 1.0000000 0.0000000
 > newdata <- read.table(text="  Kyphosis Age Number Start
 + present  42      7     6
 + present  35      9     7
 +  absent 100      3    14
 +  absent 125      2    11
 +  absent   1      4    15", header=TRUE)
 > newdata
   Kyphosis Age Number Start
 1  present  42      7     6
 2  present  35      9     7
 3   absent 100      3    14
 4   absent 125      2    11
 5   absent   1      4    15
 > predict(fit, newdata=newdata)
      absent   present
 1 0.4210526 0.5789474
 2 0.4210526 0.5789474
 3 0.4285714 0.5714286
 4 0.8571429 0.1428571
 5 1.0000000 0.0000000
- 説明不足で申し訳ありません。また、実例を示していただきコメントしやすくなりました。~
今回、事前に学習しておいたモデル(例えば上記ではfit)を実際のデータ(newdata)に適用した結果を目視で確認したところ、第一のリーフ(ここではabsent=1.0,present=0.0)に行ったデータのうち、実際にabsentであった確率は0.8だったとします。~
この時、fitのパラメータを変えることで、次回からpredictをした時に0.8を出力するようなことはできないかという質問でした。~
もう一度決定木の学習をすればいいと思うかもしれませんが、データ量は膨大なので、全部のノードを再学習するようなデータは取れないとします。 -- [[yu]] &new{2016-08-24 (水) 21:37:49};
- 追記~
下記の「xxxxxxxxxxxを実行」に入るような機能を探しています 
 > fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
 > newdata
   Kyphosis Age Number Start
 1  present  42      7     6
 2   absent  35      9     7
 3   absent 100      3    14
 4   absent 125      2    11
 5   absent   1      4    15
 > predict(fit, newdata=newdata)
      absent   present
 1 1.0000000 0.0000000
 2 1.0000000 0.0000000
 3 1.0000000 0.0000000
 4 1.0000000 0.0000000
 5 1.0000000 0.0000000
 # あれ、absent 100%の結果だったのにpresentが混ざっている。100%を80%にしたいな
 > fit$frame$n[3] = 20
 > fit$frame$dev[3] = 16
 > predict(fit, newdata=newdata)
      absent   present
 1 1.0000000 0.0000000
 2 1.0000000 0.0000000
 3 1.0000000 0.0000000
 4 1.0000000 0.0000000
 5 1.0000000 0.0000000
 # 何も変わってない・・・
 > xxxxxxxxxxxを実行   
       absent   present
 1 0.8000000 0.2000000
 2 0.8000000 0.2000000
 3 0.8000000 0.2000000
 4 0.8000000 0.2000000
 5 0.8000000 0.2000000
 # できたー
- > あれ、absent 100%の結果だったのにpresentが混ざっている。100%を80%にしたいな&br;それって,あなたの主観(とはいわないまでも,希望的結果)でしょう?データに基づいた予測じゃないじゃないですか。たとえば,再分析したとして 0.8 ではなく 0.85 とか 0.75 かもしれないじゃないですか。あなたの主観を予測結果として表示するようにしても,意味があるのかな? -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-08-28 (日) 15:32:04};
- データに基づいた予測です。今回は例のため5件で書きましたが、new dataは最新のもの1000件とします。一方、fitを学習するときに使ったデータは去年のもの1000件です。もちろん、新しものをすべて信用すると急にモデルが変わってしまうので、過去の結果×r + 新しい結果×(1-r)で更新していくなどの必要性がありますが、そこまで細かい例示をすると逆にわかりにくくなるので -- [[yu]] &new{2016-08-28 (日) 16:17:23};
- どうもよくわかりませんが,「データに基づいた予測」といっても,それは rpart 的に予測されたものではないでしょう?また,「新しものをすべて信用すると急にモデルが変わってしまう」というのも,説明変数と従属変数の関係が時々刻々変化しているという状況なのかもしれないけど,「過去の結果×r + 新しい結果×(1-r)で更新」自体の,r をどのようにするかも,【主観的】には決められないでしょう。rpart で計算するにしても計算に数百時間掛かるわけでもないのなら,再学習した方が確実でしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-08-28 (日) 17:27:30};
- 例えば、classが故障、非故障だったとします。故障のクラスと判断されたほうはメンテナンスを行うので、本当に故障しているかわかり、新たにデータを得ることができます。しかし、故障していない方も含めて全数検査するには膨大なお金がかかるので、故障していない方のノードに対するデータはえられないため、決定木を1から再学習するのは難しいです。あるいは故障と判断したものだけ集めてそれだけを2段目の決定木にするというような方法もありますが、それはそれでプログラムの構造が大きく変わってしまうので開発工数もかかります。まあ書ける情報には限りがありますので、必然性があるかという論点で議論をしても平行線だと思いますので、上記のようなことが可能なのかをお尋ねしたいです。 -- [[yu]] &new{2016-08-28 (日) 18:36:36};
- > 必然性があるかという論点で議論をしても平行線&br;可能かどうかより,適切かどうかの議論の方が必要だと思います。まあ,いいです。ほかの人が解決策を示してくれるといいですね。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-08-29 (月) 08:02:56};
- 読解力がなくてあさってな回答かもしれませんけど、求められる答えって複数存在するんじゃないですか。 例えば、故障が、「設置してからの時間」「運転時間」「故障日平均気温」「故障回数」でモデル化できるとして、どこを変えてもお望みの故障率にできちゃいますよね?  モデルをRでリライトしてloop処理で求めた方がいいと思うけど。 -- [[asap]] &new{2016-08-29 (月) 21:31:24};

#comment

**GLM関数を用いたガンマ分布のFittingについて [#c4d3b470]
>[[michael]] (2016-08-11 (木) 21:31:03)~
~
初めて書き込ませていただいています。Rの全くの初心者です。~
大学院の研究で使用しているデータの処理をRで行おうとして四苦八苦しています。ある時間軸に対して変化するデータをガンマ分布へのフィッティングを試みています。まず一般化線形モデル:glm関数を用いてガンマ分布へのFittingを試みましたがうまくいきませんでした。そこでnls関数を用いてガンマ分布の関数式へFittingを行うと良好なFittingを得られました。ただできればglm関数を用いたいと思っています。glm関数でうまくいかない原因と解決点をいただけましたらとても有難いです。よろしくお願いいたします。~
~
使用環境は~
R version 3.3.1 (2016-06-21)です。~
~
nlsでの解析は以下の通りです。
 # 観測値(時間)
 sec <- c(0, 2, 4, 6, 8.1, 10.1, 13.2, 16.2, 19.3, 22.3, 60.3)
 # 観測値(結果)
 hu <- c(0.7, 0.3, 47.7, 149.3, 195.8, 243.5, 236.9, 141, 81.2, 59.2, 67.0)
 # 観測値のプロット
 plot(sec, hu)
 # Fitting したいデータ選択
 x <- sec[2:10]
 y <- hu[2:10]
 model = (y~x)
 # 非線形回帰
 result <- nls(y ~ (c*x^(a)*exp(-x/b)/gamma(a+1)), start = c(a=2, b=10, c=1),trace=TRUE)
 # 結果のサマリー
 summary(result)
 coefficients(result)
 # 係数の取り出し
 coe <- result$m$getPars()
 # 係数取り出しの確認(1,2,3 が abc に相当)
 coe[1]
 #近似曲線の作成
 t <- seq(0, 60)
 z <- coe[3]*t^(coe[1])*exp(-t/coe[2])/gamma(coe[1]+1)
 lines(t, z)
一方でGLM関数を用いて
 sec <- c(0, 2, 4, 6, 8.1, 10.1, 13.2, 16.2, 19.3, 22.3, 60.3)
 hu <- c(0.7, 0.3, 47.7, 149.3, 195.8, 243.5, 236.9, 141, 81.2, 59.2, 67.0)
  
 plot(sec, hu, ylim=c(0, 1000)) 
 sec.pos<- sec[2:10]
 hu.pos<- hu[2:10]
 
 glm.hu <- glm(hu.pos~sec.pos, family = Gamma)
 glm.hu$coefficients
 
 x <- seq(0, 60) 
 eta.pred <- glm.hu$coefficients["(Intercept)"]+glm.hu$coefficients["sec.pos"]*x
 hu.pred <- 1/eta.pred
 
 1/summary(glm.hu)$dispersion
 library("MASS")
 a <- gamma.shape(glm.hu)$alpha 
 a
 
 s.hu.pred <- 1/eta.pred/a
 lines (x, hu.pred)
とした場合には綺麗なFittingを得ることができません。~

//
- あなたのやろうとしていることは,GLM ではできませんよ。GLM がなんなのか再確認するとよいでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-08-12 (金) 02:07:40};
- お返事いただきましてありがとうございます。このデータはGamma分布に従うことが既知の研究で明らかになっているのでGLMで線形化モデルにできると思ったのですが。分布とするには観測データが少なすぎるのでしょうか。もしご迷惑でなければ理由のヒントやもしくは勉強すべき資料などご教授いただけないでしょうか。 -- [[michael]] &new{2016-08-12 (金) 10:28:25};
- 「自分で調べて!」っていってるのに。久保さんの &br;生態学のデータ解析 - FAQ 一般化線形モデル http://hosho.ees.hokudai.ac.jp/~kubo/ce/FaqGlm.html&br;でもみればよい。~
・ glm(y ~ x, ...) の x が説明変数で y が応答変数~
・ family で指定する確率分布は...「応答変数の (したがう) 確率分布」~
・ family 指定は...Gamma: 応答変数が連続値で正の値~
glm で family=Gamma を指定する分析例(glm のオンラインヘルプから)~
 # A Gamma example, from McCullagh & Nelder (1989, pp. 300-2)
 > clotting <- data.frame(
 +     u = c(5,10,15,20,30,40,60,80,100),
 +     lot1 = c(118,58,42,35,27,25,21,19,18))
 > ans <- glm(lot1 ~ log(u), data = clotting, family = Gamma)
 > summary(ans)
 
 Call:
 glm(formula = lot1 ~ log(u), family = Gamma, data = clotting)
 
 略  
 
 Coefficients:
               Estimate Std. Error t value Pr(>|t|)
 (Intercept) -0.0165544  0.0009275  -17.85 4.28e-07
 log(u)       0.0153431  0.0004150   36.98 2.75e-09
 
 (Dispersion parameter for Gamma family taken to be 0.002446059)
 
     Null deviance: 3.51283  on 8  degrees of freedom
 Residual deviance: 0.01673  on 7  degrees of freedom
 AIC: 37.99
 
 Number of Fisher Scoring iterations: 3
 
 > plot(lot1 ~ log(u), data=clotting)
 > lines(fitted(ans) ~ log(clotting$u), type="b", pch=19)
ガンマ分布のパラメータなんか予測してないでしょう?別ものだということがわかるでしょう。~
もっとも,両者が全く関係ないわけではなくて~
ぎょーむ日誌 2009-12-12 http://hosho.ees.hokudai.ac.jp/~kubo/log/2009/kubolog20091212.html
のような関係はある。しかし,あなたのやりたいことをやるには nls を使うのだ。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-08-12 (金) 11:10:57};~
&ref(aa.png);
- 助かりました。ご丁寧に教えてくださいまして本当にありがとうございます。教えていただいた内容をもとにしっかりと勉強させていただきます。 -- [[Michael]] &new{2016-08-12 (金) 14:38:47};

#comment

**KFASを使用した時系列分析について [#y167d3ed]
>[[べのたみ]] (2016-08-11 (木) 08:58:32)~
~
http://elsur.jpn.org/ck/#intro~
の説明と置いてくださっているソースコードを見ながら状態空間の勉強中です。~
9章のパケージKFASを使用する部分で、exercise.Chapter9.4a のソースコードを使っても、~
行列Hの値などが出力結果として示されているものと桁が異なる値が出てきます。~
9.4bのソースコードを使った値は表示されているものとほぼ同じ値が出ます。~
原因と解決策につながるヒントがいただけたら嬉しいです。~
~
使用環境は以下の通りです~
R version 3.3.1 (2016-06-21)~
Platform: x86_64-w64-mingw32/x64 (64-bit)~
Running under: Windows 7 x64 (build 7601) Service Pack 1~
~
other attached packages:~
 [1] KFAS_1.2.3        dlm_1.1-4

//
- 私が実行しても行列Hの値は桁が異なっていました。ご当人に質問されては如何でしょう? 全くの検討違いかもしれませんが、# Fittingのmethodを"BFGS"から"L-BFGS-B"に変更すると一応それっぽい値が出ました。 -- [[通りすがり]] &new{2016-08-12 (金) 19:20:01};
- コメントありがとうございました。methodに選べるものに何があるのかから見てみたいと思います。 -- [[べのたみ]] &new{2016-08-22 (月) 10:18:01};

#comment

**par() の値を恒久的に変えるには・・・ [#y7e2f058]
>[[すみこ]] (2016-08-07 (日) 05:45:14)~
~
R を起動させるたびに~
par(las=1)~
をしているのですが、それを自動に行う方法はありますか?~
あるいはデフォルトを恒久的に変えられますか?~

//
- par に限りませんが,R の起動のたびに行う一連の設定などは .Rprofile に書き込んでおけばよいのです。.Rprofile を作る場所は Mac ならば,ホームディレクトリなんですけど,Windows では「マイドキュメント」かな?aa <- 123 などと書いておいて,R を立ち上げて aa を入力したら 123 と表示されればそこで OK ということで,何箇所か試してみればよいかと。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-08-07 (日) 10:11:13};
- 河童の屁は,河童にあらず,屁である。さん。親切なご返事どうもありがとうございました。ご指示に従って .Rprofile ファイルを作り、所定の場所に置きました。
 library(survival)
 cat('Welcome!', '\n')
 a <- 10
 plot(rnorm(10))
このうち最初の3つはちゃんと走るのですが、Error: could not find function "plot" と出ます。plot() だけではなくて、rnorm(), par() も could not find function のエラーが出ます。何か間違っているのでしょうか? 私のOSは Mac10.11 El Capitan で R version 3.3.1 を使用しています。引き続きよろしくお願いします。立ち上げた時はこう出ます。 -- [[すみこ]] &new{2016-08-09 (火) 04:22:35};
 R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
 Copyright (C) 2016 The R Foundation for Statistical Computing
 Platform: x86_64-apple-darwin13.4.0 (64-bit)
 
 R is free software and comes with ABSOLUTELY NO WARRANTY.
 You are welcome to redistribute it under certain conditions.
 Type 'license()' or 'licence()' for distribution details.
 
 Natural language support but running in an English locale
 
 R is a collaborative project with many contributors.
 Type 'contributors()' for more information and
 'citation()' on how to cite R or R packages in publications.
 
 Type 'demo()' for some demos, 'help()' for on-line help, or
 'help.start()' for an HTML browser interface to help.
 Type 'q()' to quit R.
 
 Welcome! 
 Error: could not find function "plot"
 [R.app GUI 1.68 (7238) x86_64-apple-darwin13.4.0]
 
 [Workspace restored from /Users/tatsukikoyama/.RData]
 [History restored from /Users/tatsukikoyama/.Rapp.history]
 
 > a
 [1] 10
- par, plot は graphics パッケージ,rnorm は stats パッケージにあり,この時点ではいずれのパッケージも読み込まれていません。使いたい場合には library(graphics),  library(stats) が事前に必要です。
 library(survival)
 cat('Welcome!', '\n')
 a <- 10
 library(graphics)
 library(stats)
 plot(rnorm(10))
その他,sessionInfo() で表示されるパッケージ(base など)に含まれる関数を利用したいときも同じです。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-08-09 (火) 06:49:06};
 attached base packages:
 [1] grDevices utils     datasets  stats     graphics  methods   base     
 
 other attached packages:
 [1] survival_2.39-5
 
 loaded via a namespace (and not attached):
 [1] Matrix_1.2-6    splines_3.3.1   grid_3.3.1      lattice_0.20-33
- ありがとうございます! すべて解決しました!! -- [[すみこ]] &new{2016-08-09 (火) 10:05:18};
- でも par(las=1) とかはウィンドウを閉めたらリセットされてしまうのね。 -- [[すみこ]] &new{2016-08-09 (火) 21:28:30};
- なるほど。勉強になります。試行錯誤で,以下のようにしたらグラフィックウインドウを閉じても,再度の描画時にもlas=1 になると思います。
 setHook("plot.new", function() par(las=1))
この場合は,library(graphics) や library(stats) は不要です。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-08-09 (火) 22:32:04};
- いつもお世話になっております。a=c(-10.22308777,-17.73631427,-31.26787059,-30.0144283,16.00892923,-0.069389969,-1.527697676,40.23164602,17.84427993,51.90862367,32.43250902,-14.69527371,-21.51305243,2.467123024,-1.591029265,-6.002531197,-5.528871379,-20.72354649) b=c(3.89776009,-1.599860574,-4.454146619,-6.591765968,-0.790181177,2.356401065,0.284653276,8.520993351,2.143995797,4.920336488,2.454386261,-1.756563062,-2.934179195,-2.443421907,-0.75099722,0.213094238,-0.430802605,-3.039698906) reg=lm(formula=a~b) plot(a,b) abline(reg) -- [[Piro]] &new{2016-10-05 (水) 12:00:38};

#comment

**クラスタ分類時の各項目にラベル付け [#lc9c0eba]
>[[ゴヤンキー]] (2016-08-02 (火) 13:43:13)~
~
初めての投稿です。~
よろしくお願いいたします。
 店舗名	3分	5分	7分
 aaa	16,347	47,412	89,237
 bbb	3,047	10,191	30,263
 ccc	5,974	20,824	50,549
 ddd	8,852	26,060	48,916
といったデータをクラスタ分類するときに、実行結果にaaa、bbb等の名前をつけることができず、番号が振られてしまいます。~
~
何か方法はございますでしょうか?~
~
csvファイルからデータ読み込みしております。~

//
- plot 関数に labels という引数があるでしょ -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-08-02 (火) 14:25:38};
 > d = data.frame(name=letters[1:5], x=rnorm(5), y=rnorm(5))
 > plot(hclust(dist(d[,2:3])), labels=d$name)
- 具体的なコードを提示されないと、どの関数を使った場合の話をしているのか、何の話をされているのかこちらに伝わってきません。「番号が振られる」とは行名が番号になっているのではありませんか。 --  &new{2016-08-02 (火) 14:34:23};
 > a <- read.table(text="店舗名 3分 5分 7分
 + aaa 16,347 47,412 89,237
 + bbb 3,047 10,191 30,263
 + ccc 5,974 20,824 50,549
 + ddd 8,852 26,060 48,916", header = TRUE)
 > a[,2:4] <- lapply(a[,2:4],function(x){as.numeric(gsub(",", "", x))})
 > a
   店舗名  X3分  X5分  X7分
 1    aaa 16347 47412 89237
 2    bbb  3047 10191 30263
 3    ccc  5974 20824 50549
 4    ddd  8852 26060 48916
 > dist(a[, 2:4])
          1        2        3
 2 70994.55                  
 3 48075.80 23090.04         
 4 46237.06 25168.58  6193.97
行名が1,2,3になっているのをaaa,bbb,cccに変更します。
 > row.names(a) <- a[,1]
 > a
     店舗名  X3分  X5分  X7分
 aaa    aaa 16347 47412 89237
 bbb    bbb  3047 10191 30263
 ccc    ccc  5974 20824 50549
 ddd    ddd  8852 26060 48916
 > dist(a[, 2:4])
          aaa      bbb      ccc
 bbb 70994.55                  
 ccc 48075.80 23090.04         
 ddd 46237.06 25168.58  6193.97
- まあ,最善の方法を教えるのも善し悪しで,read.table で row.names=1 とするのが一番かな?  -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-08-02 (火) 14:47:21};
 > # "," は read.table に渡す前に削除しておく
 > a <- read.table(text=gsub(",", "", "店舗名 3分 5分 7分
 + aaa 16,347 47,412 89,237
 + bbb 3,047 10,191 30,263
 + ccc 5,974 20,824 50,549
 + ddd 8,852 26,060 48,916"), header = TRUE, row.names=1)
 > a
      X3分  X5分  X7分
 aaa 16347 47412 89237
 bbb  3047 10191 30263
 ccc  5974 20824 50549
 ddd  8852 26060 48916
- 「row.names=1 」は知りませんでした。勉強になります。 --  &new{2016-08-02 (火) 14:50:20};
- ご回答いただきまして大変ありがとうございます。&br;また、コードもかかずに大変申し訳ございませんでした。次回からきをつけたいと思います -- [[ゴヤンキー]] &new{2016-08-02 (火) 16:10:17};

#comment

**ベクトルの分割について [#l70aa259]
>[[ロペ]] (2016-08-01 (月) 11:35:57)~
~
お世話になります。~
 x <- 13
 1:x
のようなベクトルがあった時に、長さ5で分割して~
 1 2 3 4 5
 6 7 8 9 10
 11 12 13
のようなリストを作りたいのですが、良い方法はありますでしょうか。xは状況によって変化します。~
~
宜しくお願いします。~

//
- 「リスト」はRオブジェクト型のリストのことではなくて一般名詞としての「リスト」でしょうか。一般名詞の意味のリストなら、5列の行列にしてはいかがでしょうか。 --  &new{2016-08-02 (火) 00:46:23};
 > matrix(c(1:x, rep(NA, 5 - (x %% 5))), ncol = 5, byrow = TRUE)
      [,1] [,2] [,3] [,4] [,5]
 [1,]    1    2    3    4    5
 [2,]    6    7    8    9   10
 [3,]   11   12   13   NA   NA
要素数が5の倍数でないと行列が作れないので、足りない分をNAで埋めています。
もし、「リスト」がRのリストという意味なら、
 > a <- list()
 > for(i in 1:((x %/% 5) + 1)) a[[i]] <- (1:x)[((i-1)*5+1):((i-1)*5+5)]
 > a
 [[1]]
 [1] 1 2 3 4 5 
 
 [[2]]
 [1]  6  7  8  9 10
 
 [[3]]
 [1] 11 12 13 NA NA
というのはいかがでしょうか。また、別解として、split()を使えば下記のようにリストになります。
 > suppressWarnings(split(1:x, gl(x %/% 5 + 1, 5)))
 $`1`
 [1] 1 2 3 4 5 
 
 $`2`
 [1]  6  7  8  9 10
 
 $`3`
 [1] 11 12 13
- ご回答ありがとうございました。「リスト」はRのリストという意味で記載しました。最後のsplitが余計なNAが作成されずにきれいですね。そちらを使用させて頂きます。 -- [[ロペ]] &new{2016-08-04 (木) 17:53:35};

#comment

**heatmapの縦横比率の調整について [#m171927a]
>[[ひい]] (2016-07-28 (木) 17:16:22)~
~
heatmap()を用いてヒートマップ図を描いています。以下のようにすると行方向の要素数が縦方向の要素数より多いため、文字がつぶれてしまいます。
 data <- as.matrix(read.table("http://stat.biopapyrus.net/data/arraydata.txt", header=TRUE))
 heatmap(data)
引数cexRowで文字サイズを小さくするのではなく、heatmap図を縦方向に引き伸ばしたいのですが、どのようにすればよいでしょうか。~
~
環境はWindows 7、R 3.3.1です。どなたかご助言を宜しくお願いします。~

//
- heatmap()は融通が利かないので、gplotsパッケージのheatmap.2を使うのがよいかと?
 library(gplots)
 heatmap.2(data, trace="none", key=F, lhei=c(1,6), margin=c(3,4))
あたりでしょうか。あとは出力先をのばせばのびます。 -- [[通りすがり]] &new{2016-08-01 (月) 22:12:15};

#comment

**lattice qqmathの軸交換 [#i8d0736f]
>[[t^2]] (2016-07-23 (土) 10:18:05)~
~
初めて投稿します。よろしくお願いします。~
latticeライブラリーのqqmath()を使用しています。~
以下のようにすると、横軸qnorm, 縦軸xになります。~
横軸x, 縦軸qnormで描きたいのですが、方法はありますか?~
~
例:
 library(lattice)
 df <- data.frame(label=rep("A",200),x=rnorm(200))
 df <- rbind(df, data.frame(label=rep("B",200),x=rnorm(200)*2))
 df <- rbind(df, data.frame(label=rep("C",200),x=rnorm(200)*3))
 gr <- qqmath(~x|label,data=df)
 print(gr)
環境は以下です。
 R version 3.2.2 (2015-08-14)
 Platform: i386-w64-mingw32/i386 (32-bit)
 Running under: Windows 8 (build 9200)
 
 other attached packages:
 [1] lattice_0.20-33
よろしくお願いします。~

//
- 軽くコードに目を通しましたが、qqmathでそれを行うのは難しそうです。~
少し手間がかかりますが、別途座標値を算出しlatticeで作図するか、素直に軸逆転オプションのあるqqnormを使うのが良いかと。~
latticeでの例:-- [[通りすがり]] &new{2016-08-02 (火) 14:09:41};
 df2 <- NULL
 lab <- levels(df$label)
 for(i in 1:length(lab)) {  
   temp <- qqnorm(df[df$label==lab[i], "x"], plot.it=F)  
   df2 <- rbind(df2, as.data.frame(temp))
 } 
 df2 <- data.frame(qnorm = df2$x, x = df2$y, label = df$label)
 gr_rev <- xyplot(qnorm ~ x | label, data = df2)
- ありがとうございました。思いもよらない方法を教えてくださいました。~
type=c("b")で線をつないだ場合に悲しい結果になったので、sort()を追加して利用させていただきます。-- [[t^2]] &new{2016-08-28 (日) 10:04:29}; 
 df2 <- NULL
 lab <- levels(df$label)
 for(i in 1:length(lab)) {  
   temp <- qqnorm(sort(df[df$label==lab[i], "x"]), plot.it=F)  
   df2 <- rbind(df2, as.data.frame(temp))
 } 
 df2 <- data.frame(qnorm = df2$x, x = df2$y, label = df$label)
 gr_rev <- xyplot(qnorm ~ x | label, data = df2, type = c("b", "r"))

#comment

**persp関数 の軸目盛表示について [#vf69ea46]
>[[こやP]] (2016-07-08 (金) 15:23:01)~
~
R初心者です。よろしくお願いします。~
~
plot関数ではaxis関数と組み合わせて使用して軸の目盛を任意で変更することが出来るようです。~
~
persp関数を使った作図で軸の目盛を自由に変更したいのですが方法はありますか?~
~
R version 3.1.2 (2014-10-31)~
Platform: x86_64-w64-mingw32/x64 (64-bit)~
~
よろしくお願いいたします。~

//
- 軸の目盛りはnticksオプションで増やしたり減らしたりできます。任意の場所にラベルを置きたい場合は、trans3d()を使うことになるでしょう。 -- [[S]] &new{2016-07-08 (金) 21:57:05};
 ## デモデータ
 y <- x <- seq(-10, 10, length= 30)
 f <- function(x,y) { r <- sqrt(x^2+y^2); 10 * sin(r)/r }
 z <- outer(x, y, f)
 z[is.na(z)] <- 1
 ## 描画
 p <- persp(x, y, z, theta = 50, phi = 30, expand = .3, col = "lightblue", axes = FALSE)
 xa <- trans3d(pretty(x, n = 5), rep(min(y), 5) - .5, rep(min(z), 5), p)
 text(xa, LETTERS[1:5])
 ya <- trans3d(rep(max(x), 12) + .2, seq(min(y), max(y), length.out = 12), rep(min(z), 12), p)
 text(ya, month.name, adj = 0, xpd = TRUE)
 za <- trans3d(rep(min(x), 3), rep(min(y), 3) - .2, (0:2)*4, p)
 text(za, c("low", "middle", "high"), adj = 1, xpd = TRUE)
#ref(persp.axes.png,center)
- ありがとうございました。 -- [[こやP]] &new{2016-07-20 (水) 16:30:00};

#comment

**エラー対処 [#sb34bca4]
>[[R初心者]] (2016-07-02 (土) 18:36:05)~
~
R初心者です.どうぞ宜しくお願い致します.~
下記のエラーを消せないのですが,どこを修正すると良いのでしょうか?
 Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,  : ~
   arguments imply differing number of rows:

//
- エラーメッセージを示すのは当然必要ですが,そのエラーが出た行(およびそれより前の関連する行)を示さないと「どこを修正すると良いか」もへったくれもないということはおわかりじゃないのでしょうか。&br;まあ,「複数の引数の行数が同じじゃないよ」,といっているわけですから,その通りのことをやったんでしょう。あなたにその心当たりがあれば,そこを直せば良いでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-07-03 (日) 06:08:30};

#comment

**subset [#q488ff80]
>[[Rに困った人]] (2016-06-29 (水) 20:54:30)~
~
R初心者です.どうぞよろしくお願いいたします.~
~
subset(x,条件式)を使って,階層ごとにデータ整理をしたいと考えております.~
条件式にて,「x$area=="A市"」のようにすれば良いとは思うのですが,A市,B市,・・・Z市のように市区町村の数がたくさんあるので,何度も同じ作業をするのは厳しい状況です.何か良い方法はないでしょうか?~

//
- split を使うと良いでしょう。example(split) で利用例が示されます。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-06-30 (木) 08:56:27};
- ご丁寧にありがとうございます. -- [[Rに困った人]] &new{2016-06-30 (木) 15:30:59};

#comment

**文字列の日本語の除去 [#t24f5394]
>[[さぶ]] (2016-06-09 (木) 11:14:33)~
~
以下のような日本語と半角英数字の混在した文字列から、日本語を除去して半角英数字のみの文字列を作成したいのですが、どのような処理をすれば宜しいでしょうか。~
"12wあsxいdr5日本6tgbhnuん89iko"~
gsubで日本語のみを空文字に置換すればよいと考えたのですが、日本語を表す正規表現がないため実行できませんでした。~
~
環境はWindows 7の32bit、R 3.3.0です。~
~
お手数ですが、ご助言宜しくお願いします。~

//
- 【半角英数字「以外」】を表す正規表現を使う --  &new{2016-06-09 (木) 11:44:39};
- gsub("^[[:alnum:]]","","12wあsxいdr5日本6tgbhnuん89iko") としてみましたが、日本語は英数字として認識されているように思われます。 -- [[さぶ]] &new{2016-06-09 (木) 13:26:26};
- オンラインヘルプをよく読んでね。
 For example, [[:alnum:]] means [0-9A-Za-z], ...
だから,半角英数以外は [^[:alnum:]] なんですよ。よくわからないものを使うより,基本的な [^A-Za-z0-9] を使えば間違いが少ないですね。 --  &new{2016-06-09 (木) 15:14:12};
 > gsub("[^[:alnum:]]","","12wあsxいdr5日本6tgbhnuん89iko")
 [1] "12wsxdr56tgbhnu89iko"
 > gsub("[^A-Za-z0-9]","","12wあsxいdr5日本6tgbhnuん89iko")
 [1] "12wsxdr56tgbhnu89iko"
 > gsub("[ぁ-嶲]","","12wあsxいdr5日本6tgbhnuん89iko") # Unicode なら,これでもよいかも
 [1] "12wsxdr56tgbhnu89iko"
- 私の環境では"[^A-Za-z0-9]"のみ目的の結果が得られ、"[^[:alnum:]]"は日本語を除去できず、"[ぁ-??]"はエラーになりました。環境によるのかもしれません。 -- [[さぶ]] &new{2016-06-09 (木) 15:55:29};

#comment

**パスワードつきのエクセルファイルの読み込み方 [#ha41f2e9]
>[[X]] (2016-06-08 (水) 17:08:46)~
~
以下のようにパスワードでロックのかかったエクセルファイルを読み込みたいのですが、当然ながらエラーになってしまいます。
 library(xlsx)
 read.xlsx("file.xlsx", 1, header=T, encoding="UTF-8")
 .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  でエラー: 
 org.apache.poi.EncryptedDocumentException: The supplied spreadsheet seems
 to be an Encrypted .xlsx file. It must be decrypted before use by XSSF,
 it cannot be used by HSSF
Rでパスワードを入力して読み込む方法があればご教示頂けますか。~
~
宜しくお願いします。~

//
- [[これ:http://stackoverflow.com/questions/13996740/import-password-protected-xlsx-workbook-into-r]]とか、[[これ:http://stackoverflow.com/questions/34233738/how-to-read-and-xls-file-that-is-encrypted-with-r]]とか。 --  &new{2016-06-08 (水) 23:53:01};
- ありがとうございました。excel.linkが便利そうなので使用してみます。 -- [[X]] &new{2016-06-09 (木) 09:35:47};

#comment

**一行ずつテキスト取り出して、各テキストファイルに書き出す方法 [#wfb292d4]
>[[三回生]] (2016-06-07 (火) 01:02:04)~
~
大学三回生です。R初心者です。よろしくお願いします。~
~
大学の授業で、データフレームを操作する課題がだされました。~
内容は、21行(テキストデータ)1列のxxxx.csv(1行目は変数名)を読み込み、各行ごとにテキストファイルに書き出し、txtデータを20個分、保存するという課題です。~
以下のように記述してみたものの、うまくいきません。
 xxxx <-read.csv("xxxx.csv", header = TRUE)
 n <- 1:20
 for (i in 1:n) {      
   file.name <- sprintf("text_%02d.txt", i)
   dat[i] <- xxxx[i,]
   write.csv(dat[i], "file.name")    
 }
どこが問題で、どのように修正するべきかを教えていただけますと幸いです。~
よろしくお願いします。~

//
- 1度に全てをやろうとするから、問題点が見えないのでは。 --  &new{2016-06-07 (火) 11:21:26};
 > 1:n
 [1] 1
  警告メッセージ: 
  1:n で:   数値式は 20 個の要素を持っています: 最初の要素だけが使われました  
1つ1つ段階的に確認していけば、この時点で既に間違っていることに気づくでしょう。他にも、間違いがてんこ盛りです。1つ1つ潰していきましょう。
- コメントありがとうございます。一行ずつ確認しました。ファイルは書き出されるようになりましたが、連番ではなく、またテキストファイルが壊れているため、開くことができません。 -- [[三回生]] &new{2016-06-07 (火) 22:58:33};
 n <- 5
 for (i in 1:n) {      # i は 1, 2 が順次代入される
   x[i] <- xxxx[i,1]
   file.name[i] <- sprintf("text%03d.txt", i)
   write(x[i], file = "file.name[i]",  ncolumns = 1)
 }
- file = "file.name[i]" と file = file.name[i] の違いがわかりませんか? -- [[ ]] &new{2016-06-08 (水) 05:14:52};
- 繰り返しますが、1度に全てをやろうとするから、問題点が見えないのでは。私は1行ずつ確認とは言っていません。1行丸ごとではなく1つ1つ確認されてはどうでしょうか。また、どうしていきなりfor文を実行するのでしょうか。i=1の場合に正しく動作するのを確認した後にforでループを書くのが問題解決への近道です。 --  &new{2016-06-08 (水) 08:32:10};
 > file.name <- character() #次の行をいきなり実行するとエラーが出るのでとりあえずfile.nameを作成
 > file.name[1] <- "text001.txt" # i=1の場合を実行
 > "file.name[1]"
 [1] "file.name[1]"
 > file.name[1]
 [1] "text001.txt"
- 大学の課題って...指導教員とのやり取りなんだろうか?↑ --  &new{2016-06-08 (水) 12:25:58};
- ↑ 確かに私は大学教員だしRも教えているけど、見ず知らずの課題と質問者です。 --  &new{2016-06-08 (水) 23:42:09};
- 時間がかかりましたが、無事にコードを作成できました。どこの大学の教員か存じ上げませんが、非常にわかりやすいご指導ありがとうございました。 -- [[三回生]] &new{2016-06-10 (金) 01:30:54};

#comment

**ggplot2のtheme_classicで軸が非表示になる [#s022b42f]
>[[SATO]] (2016-06-05 (日) 01:02:47)~
~
R3.3.0でggplot2を使っています.図をシンプル(X軸とY軸のみ表示で,補助メモリも無し)にするためtheme_classic()を使うのですが,X,Y軸共に表示されません.以前に,ggthemesというパッケージをインストールしてからこのような症状が出始めたように感じています.また,R3.1.2やR3.0を使っていた時は問題なく使えていたのですが,どなたか解決方法をご存知の方は教えていただけないでしょうか.~

//

#comment

**ggplot2の戻り値,返り値の参照方法について教えてください [#j857c986]
>[[さかなねこ]] (2016-05-24 (火) 04:56:38)~
~
ggplot2の戻り値,返り値の参照方法について教えてください~
たとえば,baseのhist関数だと描画後に返り値を参照して別のことに使いまわすことができますが,ggplot2でも同じようなことができるのでしょうか。
 > h2 <- hist(iris[,1], seq(0,10,1))
 > names(h2)
 [1] "breaks"   "counts"   "density"  "mids"     "xname"    "equidist"
 > str(h2)
 List of 6
  $ breaks  : num [1:11] 0 1 2 3 4 5 6 7 8 9 ...
  $ counts  : int [1:10] 0 0 0 0 32 57 49 12 0 0
  $ density : num [1:10] 0 0 0 0 0.213 ...
  $ mids    : num [1:10] 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
  $ xname   : chr "iris[, 1]"
  $ equidist: logi TRUE
  - attr(*, "class")= chr "histogram"
となり,度数を取り出して別途表にすることなどができますが,ggplotだと,
 > g <- ggplot(  iris,   aes(x=Sepal.Length))
 > g <- g + geom_bar(stat ="bin")
 > plot(g)
 stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.
 > names(g)
 [1] "data"        "layers"      "scales"      "mapping"     "theme"      
 [6] "coordinates" "facet"       "plot_env"    "labels"     
となり,度数データがどこにあるのかわかりません。~
ggplotで作ったグラフの数値データ(返り値,戻り値)はどこに格納されているのかご存知の方教えていただけないでしょうか。~
下記サイトによれば,どこかにしまわれているように思えるのですがわかりませんでした~
https://github.com/hadley/ggplot2-book/blob/master/layers.rmd#generated-variables~

//
- ggplot なんかおやめなさい -- [[ ]] &new{2016-05-24 (火) 22:16:14};
- 確かに,facet_wrap, gridが便利で目立ちますがbaseを極めるのも手かも知れないですね -- [[さかなねこ]] &new{2016-05-25 (水) 05:01:06};
- ggplotユーザではないので、外しているかもしれませんが、次のようにして得られませんか。 --  &new{2016-05-26 (木) 19:01:44};
 > a <- plot(g)
 > a$data[[1]]$count
 [1]  4  1  4  2 11 10  9  4  7  7  6  8  7  9  6  4  9 12  2  8  3  5  1  3  1  1
 [27]  1  4  0  1
- まさに欲しいものが得られました! gではなくてplot(g)を調べればよかったのですね。大変助かりました。ありがとうございます。 -- [[さかなねこ]] &new{2016-05-27 (金) 21:47:47};

#comment

**rpartの学習済みモデルのsaveとloadについて [#z3e3bc94]
>[[yu]] (2016-05-18 (水) 23:01:45)~
~
rpartで学習した結果のモデルを保存したいのですがその方法がわからず、記載されているページもなかったのでご教授頂きたく思います。~
例えば下記のようにしても、エラーが出て保存することができません。~
~
また可能でしたらモデルを読み込んで使用する方法もご教授いただけたらと思います。
 ct <- rpart(answer ~ hit + num, method = "class" ,  control=rpart.control(minsplit=5, cp=0.003, loss=matrix(c(0,1,4,0), byrow=TRUE, nrow=2)))
 rpart.plot(ct, type = 1, uniform = TRUE, extra = 1, under = 1, faclen = 0)
 write(data.frame(ct), "c:\\rdata\\tree.txt")

//
- コンソールに表示されるものをそのままファイルに保存したいなら,sink 関数を使えばよいですよ。&br;バイナリ形式での保存と読み込みならば,あなたの記事のタイトルにあるけど save 関数と load 関数を使えばよいのです。&br;それぞれの関数の使い方はオンラインヘルプを参照のこと。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-05-19 (木) 09:01:41};
- ありがとうございます。できました -- [[yu]] &new{2016-05-19 (木) 22:13:54};

#comment

**MeCabの辞書、mecab-ipadic-NEologdを追加できません。 [#d35387bb]
>[[初心者]] (2016-05-09 (月) 23:21:04)~
~
以下の手順でmecab-ipadic-NEologdのインストールをおこないました。
 1. git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
 2. cd mecab-ipadic-neologd
 3. ./bin/install-mecab-ipadic-neologd -n
3.の手順を実行したあとに以下のような記述が表示されましたので、~
mecab-ipadic-NEologdのインストールが成功したものだと思っていました。~
(浅学で申し訳ないのですが、okがたくさん出ておりましので成功だと考えました。)
 [install-mecab-ipadic-NEologd] : Start..
 [install-mecab-ipadic-NEologd] : Check the existance of libraries
 [install-mecab-ipadic-NEologd] :     find => ok
    : 【途中省略】
 [install-mecab-ipadic-NEologd] :     diff => ok
 [install-mecab-ipadic-NEologd] :     tar => ok
 [install-mecab-ipadic-NEologd] :     unxz is not found.
そして公式にあるように以下の文言を実行しましたが、エラーが表示されました。~
 echo "10日放送の 【途中省略】 一幕があった。" | mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
 param.cpp(69) [ifs] no such file or directory:
    /usr/local/lib/mecab/dic/mecab-ipadic-neologd/dicrc
どうすればこの問題を解決できますでしょうか。ご教授いただければ幸いです。~

//
- 原因は書いてるじゃないですか。> unxz is not found. -- [[wakakumo]] &new{2016-05-10 (火) 00:09:17};
- > unxz is not found. -- [[初心者]] &new{2016-05-10 (火) 10:49:21};
- > unxz is not found. -- [[初心者]] &new{2016-05-10 (火) 10:49:22};
- これが原因だったのですね。 > unxz is not found. これは、どのようにすれば解決出来るのでしょうか。 -- [[初心者]] &new{2016-05-10 (火) 10:51:03};
- 書いてあることを書いてある通りに実行できないんですか? https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md#user-content-%E5%8B%95%E4%BD%9C%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AA%E3%82%82%E3%81%AE -- [[wakakumo]] &new{2016-05-10 (火) 11:36:18};
- 程度にもよるけど,初心者さんには,そのページ見ても,どうしていいかわからないんじゃない?わかるなら,ここで,こんな質問していないだろうし。&br;質問者も,あなたの OS の種類くらい明示した方がいいんじゃない?質問の前にということで,注意事項がかいてあるでしょうが。&br;回答者の方も,いらだつ気持ちもわかりますけどね。そもそも,install.packages だけでちゃんと動くようにしてあげないメインテイナも,大人げないというか自己満足におちいっているんじゃないか?「それなりの手順を踏んでもらいてえんで。使えないなら,使ってもらわなくても結構でさあ。」というのは,どうだかなあと思うけど。&br;わたしやねえ,そんなもん使えなくても一向苦にならないけど。使いたい人にとっては,それじゃあ,冷たすぎるんじゃねえかってことよ。「素人には使ってもらわなくても結構だ!」ということなんだろうかねぇ。初心者の皆様,お気の毒さま。「そんなんじゃあ,使ってやんないよ!!」っていえばよい(^_^) -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-05-10 (火) 22:21:07};
- 投稿方法,一向に進歩しませんな〜〜 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-05-10 (火) 22:32:47};
- unxz, iconv, homebrewを再度入れ直しました。その結果、Could not resolve hostというエラーがでましたが、違うwifiに繋ぎ直したところ無事に辞書が使えるになりました。また、ターミナルで内容を書き変え、RMeCabのデフォルト辞書に設定することができました。以後、投稿に関する注意事項に気をつけます。皆様ありがとうございました。 -- [[初心者]] &new{2016-05-10 (火) 23:29:27};
- unxz, iconv, homebrewを再度入れ直しました。その結果、Could not resolve hostというエラーがでましたが、違うwifiに繋ぎ直したところ無事に辞書が使えるになりました。また、ターミナルで内容を書き変え、RMeCabのデフォルト辞書に設定することができました。以後、投稿に関する注意事項に気をつけます。皆様ありがとうございました。 -- [[初心者]] &new{2016-05-11 (水) 00:23:29};
- 「以後、投稿に関する注意事項に気をつけます。」なら、さっそく、このページの上端部にある「編集」をクリックして、2重書き込みになっちゃった箇所の削除をしようよ。Wikiというのは(性善説に基づいて)誰でも自由に編集できてしまうシステムなのです。 --  &new{2016-05-11 (水) 09:14:41};
- まあ,無理な要求でしょう。 --  &new{2016-05-11 (水) 21:07:08};

#comment

**MeCabに辞書を追加できません。 [#w738d2c9]
>[[初心者]] (2016-05-08 (日) 19:00:31)~
~
RMeCabでテキストマイニングを行っています。解析結果で文字が正しく解析されていないので、MeCabの辞書に単語を追加しようと思っていますが、全くうまく行きません。ご教授願います。~
~
環境は以下の通りです。~
Mac10.10.5~
R studio 0.99.489~
R version 3.2.2~
mecab-0.996~
mecab-ipadic-2.7.0-20070801~
~
http://mecab.googlecode.com/svn/trunk/mecab/doc/dic.html~
http://r-kurain.hatenablog.com/entry/20120725/1343226646~
http://www.inabalab.net/yokoyama/statics/r%E3%81%A7%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%9E%E3%82%A4%E3%83%8B%E3%83%B3%E3%82%B02/~
上記のサイトにあるように、以下のフォーマットに沿ってwords.csvという名前でcsv形式(UTF-8)を作成しました。~
~
そして、ターミナルから以下のコマンドを実行したところ、()内のエラーが表示されてしまい、ここから先に一向に進めません。~
~
$/usr/local/Cellar/mecab/0.98/libexec/mecab/mecab-dict-index -d /usr/local/Cellar/mecab/0.98/lib/mecab/dic/ipadic -u words.dic -f utf8 -t utf8 words.csv~
(-bash: $/usr/local/Cellar/mecab/0.98/libexec/mecab/mecab-dict-index: No such file or directory)~
~
or~
~
$/usr/local/libexec/mecab/mecab-dict-index -d/usr/local/lib/mecab/dic/ipadic -u words.dic -f euc-jp -t euc-jp words.csv~
(-bash: $/usr/local/libexec/mecab/mecab-dict-index: No such file or directory)~
~
このようなエラーが表示された場合、どのようにすれば単語を追加できますでしょうか。~
よろしくお願いします。~
~
また、アンインストールしようとしても()内のエラーが表示され実行できませんでした。~
~
cd ~/Downloads~
cd mecab-ipadic-2.7.0-20070801~
sudo make uninstall~
(make: *** No rule to make target `uninstall'.  Stop.)~
~
cd ~/Downloads~
cd mecab-0.996~
sudo make uninstall~
(make: *** No rule to make target `uninstall'.  Stop.)~

//
- $はプロンプトを示す記号なので、入力する必要はありません。また、登録したい語が世間一般でもわりと使われているものであれば、イマドキはmecab-ipadic-neologdを導入するのが一番楽ではないでしょうか。 -- [[wakakumo]] &new{2016-05-08 (日) 23:23:35};

#comment

**時系列csvデータの読み込み [#v25977a4]
>[[しょうもない初心者]] (2016-05-05 (木) 18:04:30)~
~
書き込みが少々気が引けますが、本を買って読み始めたばかりの超初心者です。~
~
これまでエクセル表の上だけで、何とかマクロを使ってデータ分析を行って来ましたが、Rの持つ時系列データの分析機能を試してみたく、質問をさせて頂きます。~
~
データはデマンド計1年分の横軸時刻、縦軸日付で、下記の様な構造をしています。~
文字列でアップすると見ず(づ)らいのですが、横が48列、縦が365行の17,520個のデータです。
 日付\時刻 0:30 1:00 1:30 2:00 2:30 3:00 3:30   …  23:30 0:00 (→計48列)
 2015/7/1   51.3 49.8 52.0 51.7 62.2 70.5 88.6   …  156.1 148.2
 2015/7/2   64.3 60.0 57.4 58.8 64.5 70.5 84.3   …  204.2 211.9
   …
 2016/6/29  42.3 44.4 50.2 63.4 87.5 99.0 105.6  …  253.0 244.1
 2016/6/30  52.8 73.5 70.9 82.5 88.4 82.3 120.3  …  324.4 318.2
 (↓計365行)
このデータをcsv形式で保存して、read.csvで読み込もうと色々と試したのですが、plot.ts等でプロットしようとしても受け付けられず、入力がうまくいっていない様です。~
日付と時間との1:1データですので、下記の様な2列のデータに直せばうまくゆきそうな感じもしますが、もし上記のまま上手く読み込む方法がありそうでしたら、アドバイスをお願い致します。
 Date-Time            Demand
 2015/07/01-00:30:00   51.3
 2015/07/01-01:00:00   49.8
   …
 2016/06/30-23:30:00  324.4
 2016/06/30-00:00:00  318.2

//
- 転記をありがとうございましたm(_ _)m -- [[しょうもない初心者]] &new{2016-05-05 (木) 18:13:56};
- 転記をありがとうございましたm(_ _)m -- [[しょうもない初心者]] &new{2016-05-05 (木) 19:19:47};
- 時刻ごとのデータを縦に結合して、それに日付をcbindすればよいのでは。 -- [[wakakumo]] &new{2016-05-06 (金) 01:15:53};
日付を繰り返し生成するには、たとえば、以下のように。
 startdate<-as.POSIXlt("2016-04-01")
 enddate<-as.POSIXlt("2016-06-30")
 date_range<-seq(startdate,enddate,by="1 day")
 repeats<-48
 repeated_dates<-as.POSIXlt(as.character(NULL))
 tmp<-as.POSIXlt(as.character(NULL))
 for (i in 1:length(date_range)){
	 tmp<-rep(date_range[i],repeats)
	 repeated_dates<-c(repeated_dates,tmp)
 }
- wakakumo様 早速のご指南をありがとうございました。まだデータがどの様な形で読み込まれているのかも確認する方法を理解していない未熟者で恐縮ですが、頂いたご提案を理解出来る様になって試させて頂きたいと思います。 -- [[しょうもない初心者]] &new{2016-05-06 (金) 12:40:42};
- for を使う必要はない。メモリ確保を気にしなくてよいし。c を使って結合していくのは最悪。
 startdate <- as.POSIXlt("2016-04-01")
 enddate <- as.POSIXlt("2016-06-30")
 date_range <- seq(startdate,enddate,by="1 day")
 repeats <- 48
 repeated_dates <- rep(date_range, each=repeats) # この一行だけだ
爆速だし。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-05-06 (金) 17:45:22};
- 参考になります。ありがとうございました。 -- [[wakakumo]] &new{2016-05-06 (金) 18:41:36};
- ありがとうございました。月曜に実データで試させて頂きます。重ねてお二方に感謝を申し上げます。 -- [[しょうもない初心者]] &new{2016-05-07 (土) 23:10:35};

#comment

**Rcpp(C++)で作成した3次元配列をRに連携する方法 [#fd97a533]
> (2016-04-04 (月) 12:56:10)~
~
Rcppを使ってRとC++の連携(下記1-3)を行いたいと思っています。~
~
1.RからC++へ2つの行列を渡す~
2.2つの行列を元に特定処理を実行し、3次元配列を作成~
3.2で作成した3次元配列をRに返す~
~
3の方法が分からず、、、もしよければ助言いただけないでしょうか~
具体的には下記コードで定義したfuncmatの戻り値の型として何を指定すれば~
3次元配列を返すことができるのでしょうか?~
====下記Rコード====
 library( Rcpp )
 library( RcppArmadillo )
  
 test <-'
 #include <RcppArmadillo.h>
 // [[Rcpp::depends(RcppArmadillo)]]
 
 using namespace Rcpp;
 
 // [[Rcpp::export]]
 Type funcmat(NumericMatrix A, NumericMatrix B) {
 
 int XXXX[10][20][30];
 
 //行列A、Bに関する処理をXXXXに代入
 
 return (XXXX);
 }
 
 '
 sourceCpp(code=test)
 
 a <- matrix(1:100,10)
 b <- matrix(2:101,10)
 
 c <- funcmat(a,b)
 
//
- 素直に最初から最後までを C++ で書くことをお勧めします。そのほうが早いし,C++ で全部書けることを前提とした Cpp だと思うわけですよ。C++ で書けないのに R を介すれば書けるんじゃないかというのは,幻想じゃないか?本末転倒。  -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-04-04 (月) 19:45:21};

#comment

**自作関数の各役割について教えて下さい [#v17abfde]
>[[初学者]] (2016-04-01 (金) 21:35:40)~
~
column_name <- function(name, ...) {~
paste0(name, "[", paste(..., sep = ","), "]") }~
~
上記のfunction(name, ...)の...はどのような役割があるのでしょうか。~
また、2行目のpaste0()内は何をどうしようとしているのでしょうか。~
~
よろしくお願いします。~

//
- ...はdotsMethodsのヘルプを参照。paste0の中身はpaste()の結果を"["と"]"で囲って、その先頭にnameの内容をつけるという処理をしています。paste()は、...の中身を","で区切って出力しています。 --  &new{2016-04-01 (金) 22:30:16};
- pste0 は paste の sep = " " を除いたものです
 paste (..., sep = " ", collapse = NULL)
 paste0(..., collapse = NULL)
昔はなかった(paste を使っていた)。近年になってから定義されました。 --  &new{2016-04-02 (土) 10:11:33};
- 理解できました。ありがとうございました。 -- [[初学者]] &new{2016-04-02 (土) 13:07:12};

#comment

**変化をプロット・グラフ化 [#ie941ca9]
>[[Rに困ったさん]] (2016-03-21 (月) 00:27:54)~
~
例としまして,下記のようなデータがあるとします.
 ID year distance density pattern
 1  2010    20000   1000   move1
 1  2011    25000   2000   move1
 2  2010    15000   2000   move2
 2  2011    12000   1000   move2
縦軸がdistance,横軸がdensityのグラフを作成します.~
IDが1の前年(2010)と本年(2011)をプロットし,2点を線で結びたいです.~
IDが2も同様にします.~
IDが1とIDが2のデータは同じグラフ上に示したいです.~
さらに,patternがmove1とmove2で色分けできると嬉しいです.~
~
R初心者です.Rでの表現方法をご存知の方がいましたら,ご教示して頂けると助かります.~

//
- どこまで一般化すればよいのかわからないので,取りあえず以下のようなプログラム。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-03-21 (月) 10:37:33};
 d <- read.table("data0321.R", header=TRUE)
 f <- split(d, d$ID)
 plot(d$density, d$distance, type="n")
 junk <- sapply(f, function(x) lines(x$density, x$distance, col=as.integer(x$pattern)))
- 非常に参考になりました.ありがとうございます. -- [[Rに困ったさん]] &new{2016-03-22 (火) 14:44:41};

#comment

**ICCパッケージでエラー [#z1376451]
>[[もち]] (2016-03-15 (火) 10:04:14)~
~
ICCパッケージを以前使用した時は問題無く計算できていたのですが、最近あらためて使用してみるとエラーが帰ってきました。~
何か情報をお持ちの方がいらっしゃったらお教え下さい。
 > library(ICC)
 > data(ChickWeight)
 > ICCbare(Chick, weight, data = ChickWeight)
 
  aggregate(y ~ x, data = tdata, FUN = length) でエラー: 
    使われていない引数 (data = tdata, FUN = length) 
 
 ICC version 2.3.0
 R version 3.2.4 (2016-03-10)
 Platform: x86_64-apple-darwin13.4.0 (64-bit)
 Running under: OS X 10.11.3 (El Capitan)

//
- 同じ環境のようですが,何の問題もなく動きましたが?&br;もしかして,aggregate という名前のユーザ定義の関数があったりするか?&br;コンソールに aggregate と打ち込んで,なにが返るか見てみるとか... -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-03-15 (火) 11:39:13};
- 仰るとおりでaggregateという関数を消したら正常に動きました。昨日から何時間も困って検索等をしていました。本当に有難うございます。 -- [[もち]] &new{2016-03-15 (火) 12:55:34};

#comment

**CRLFとLFの改行コードが混じったファイルを改行して読みたい [#y145b100]
>[[たく]] (2016-03-14 (月) 13:53:15)~
~
お世話になります。read.tableでファイルを読む際に、元のファイルが2つの改行コードが混じっているようなので、どちらの改行も改行として読みたいと思います。文字コード自体を変えてしまうとどちらかしか読んでくれないようですしUTF-8の日本語も中に交じっているのですが、どのような方法がありますでしょうか。~

//
- OS はなんですか?日本語は UTF-8 だけなんですか?それとも CP932 とかもまじっているとか?~
Mac OS X だと UTF-8 の日本語が入っていて,CRLF と LF (さらには CR だけ)が混じっていてもちゃんと読めますが? -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-03-14 (月) 15:50:18};
- ありがとうございます。環境がなく失礼しましたwindowsです。 ひとまずx2 <- strsplit(x1[,1],"\n")として切ることはできましたが、 リストで読まれている部分を1列に結合する以下のような操作がうまくできずにまだ悩んでおります。 
  a <- list(0)
  a[[2]] <- c(1:5)
  func1 <- function(x){rbind(matrix(x,ncol=1))}
  do.call(func1, a)
forで書けなくもないですが-- [[たく]] &new{2016-03-15 (火) 16:04:01};
- a <- list(0) ; a&#x5b;&#x5b;2&#x5d;&#x5d; <- c(1:5) ; do.call("rbind", a) かな? --  &new{2016-03-15 (火) 16:20:00};
- また説明が不足しており、すみません。rbind(a&#x5b;&#x5b;1&#x5d;&#x5d;,matrix(a&#x5b;&#x5b;2&#x5d;&#x5d;))の結果のようにしたいのです。strsplitで切ったリスト(ここのaa&#x5b;&#x5b;2&#x5d;&#x5d;に相当)を、他の読んだもの(ここのaa&#x5b;&#x5b;1&#x5d;&#x5d;に相当)と縦に並べられるとCRLFもLFも改行して読んだのと同じ結果になるのですが。 -- [[たく]] &new{2016-03-16 (水) 17:46:39};
- 抽象的な話ばっかりで,らちがあかない。データを簡単にして,どのようにやりたくて,あなたがどのようなプログラムを書いたか,具体的に書くのが一番でしょう。データ例はアップロードすればよいし,プログラムはそんなに長くないなら,掲示板に書き込めばよい。いずれにしろ,あなたの説明力での数行の「説明」でわかるわけがない。&br;パソコン屋さんにいって Mac を買うのも解決法かも知れない。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-03-16 (水) 21:30:57};

#comment

**漸化式の計算 [#s155f238]
>[[さくら]] (2016-03-12 (土) 17:46:42)~
~
漸化式を計算して,~
結果を順番に示す方法を教えてください.~
例えば,~
Vn+1=2*Vn+3*Vn    で初期値を 0.5 にします.~
お願いします.~

//
- 2*Vn+3*Vn って 5*Vn でしょ?  -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-03-12 (土) 18:37:26};
- Vn+1=2*Vn+5*Vn^3  でした.すみません. -- [[さくら]] &new{2016-03-12 (土) 18:53:50};
- あっという間に Inf になるような例題ですが,あくまでも例題ということで,2通りの解を(規則性からいえば,一行のベクトル演算でできるが,それは質問者の意に沿わないと思うので) -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-03-12 (土) 19:14:15};
 > n = 10
 > # ベクトルとして保存したいなら
 > a = numeric(n+1)
 > a[1] = 0.5
 > for (i in 1:n) {
 + 	a[i+1] = 2*a[i] + 5*a[i]^3
 + }
 > a
  [1]  5.000000e-01  1.625000e+00  2.470508e+01  7.544201e+04  2.146890e+15  4.947651e+46 6.055741e+140
  [8]           Inf           Inf           Inf           Inf
 > # 単に表示するだけなら
 > v1 =0.5
 > for (i in 1:(n+1)) {
 + 	print(v1)
 + 	v2 = 2*v1 + 5*v1^3
 + 	v1 = v2
 + }
 [1] 0.5
 [1] 1.625
 [1] 24.70508
 [1] 75442.01
 [1] 2.14689e+15
 [1] 4.947651e+46
 [1] 6.055741e+140
 [1] Inf
 [1] Inf
 [1] Inf
 [1] Inf
- > -- [[さくら]] &new{2016-03-12 (土) 21:03:02};
- ありがとうございます. >をいれるとエラーがでてしまいます.>をはずしてもエラーが出てしまいます. -- [[さくら]] &new{2016-03-12 (土) 21:05:15};
- 実行例のコンソール出力そのままを示したのだから,> と + で始まる部分がプログラムそれ以外は出力結果。> と + を除いた,プログラム部分を入力するんですよ。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-03-13 (日) 08:43:27};
- 参考までに --  &new{2016-03-14 (月) 13:24:39};
 > # 有理数型
 > library(gmp)
 > n <- 10
 > a<-rep(as.bigq(0),n+1)  # n+1の配列(実体はリスト)確保
 > a[[1]]<-.5
 > for (i in 1:n) {a[[i+1]] = 2*a[[i]] + 5*a[[i]]^3}
 > a[1:5]                  # 長いので1:5まで
 Big Rational ('bigq') object of length 5:
 [1] 1/2                                                               
 [2] 13/8                                                              
 [3] 12649/512                                                         
 [4] 10125654696157/134217728                                          
 [5] 5190860329874751989362836598824695980441/2417851639229258349412352
ちょっと[[のところがトリッキーかもしれません
 > # 多倍長
 > library(Rmpfr)
 > n <- 10
 > prec <- 512              # 2進数での有効桁数
 > floor(log10(2^prec))     # 10進数での有効桁数の確認
 [1] 154
 > a<-rep(mpfr(0,prec),n+1) # n+1の配列確保
 > a[1]<-".5"               # 文字列にするのは.3などの場合,一旦doubleの
 >                          # 精度にパーサー上で落ちてしまうので文字列
 >                          # として与える
 > for (i in 1:n) {a[i+1] = 2*a[i] + 5*a[i]^3}
 > a[1:4]                   # 長いので4まで
 4 'mpfr' numbers of precision  512   bits 
 [1]                               0.5                             1.625
 [3]                      24.705078125 75442.006410337984561920166015625
どちらも項内に多倍長のクラスがあるのでなんですが, doubleで演算しないように注意は必要です.
- 丁寧に書いてくださってありがとうございます.いろいろやってみます. -- [[さくら]] &new{2016-03-14 (月) 19:17:10};

#comment

**Mac で sem パッケージが使えない [#m5edebec]
>[[sem]] (2016-03-10 (木) 11:13:06)~
~
パッケージ sem を使おうとすると,以下のようなエラーメッセージが出ます~
 > library(sem)
 Error :  .onLoad は loadNamespace()('tcltk' に対する)の中で失敗しました、詳細は: 
   call: dyn.load(file, DLLpath = DLLpath, ...) 
   error:  共有ライブラリ '/Library/Frameworks/R.framework/Versions/3.2/Resources/library/tcltk/libs/tcltk.so' を読み込めません: 
   dlopen(/Library/Frameworks/R.framework/Versions/3.2/Resources/library/tcltk/libs/tcltk.so, 10): Library not loaded: /usr/X11/lib/libXft.2.dylib
   Referenced from: /usr/local/lib/libtk8.6.dylib
   Reason: image not found  
  エラー:  ‘sem’ に対するパッケージもしくは名前空間のロードが失敗しました 
なお,tcltk.so は実在しています~
 -rwxrwxr-x  1 root  admin  46268  1 25 14:13 /Library/Frameworks/R.framework/Versions/3.2/Resources/library/tcltk/libs/tcltk.so*
 
 > file('/Library/Frameworks/R.framework/Versions/3.2/Resources/library/tcltk/libs/tcltk.so')
                                                                          description 
 "/Library/Frameworks/R.framework/Versions/3.2/Resources/library/tcltk/libs/tcltk.so" 
                                                                                class 
                                                                               "file" 
                                                                                 mode 
                                                                                  "r" 
                                                                                 text 
                                                                               "text" 
                                                                               opened 
                                                                             "closed" 
                                                                             can read 
                                                                                "yes" 
                                                                            can write 
                                                                                "yes" 
sem のバージョン情報は以下の通り(確認した範囲で最新)~
 Package:            sem
 Version:            3.1-6
 Date:               2015-06-09
Macintosh で,OS のバージョン情報は以下の通り(最新)~
 OS X El Capitan
 バージョン 10.11.3
R の sessionInfo は以下の通り(最新)~
 R version 3.2.3 Patched (2016-01-23 r69993)
 Platform: x86_64-apple-darwin13.4.0 (64-bit)
 Running under: OS X 10.11.3 (El Capitan) 
 
 locale:
 [1] ja_JP.UTF-8/ja_JP.UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8
 
 attached base packages:
 [1] stats     graphics  grDevices utils     datasets  methods   base     
 
 loaded via a namespace (and not attached):
  [1] Rcpp_0.12.3      lattice_0.20-33  matrixcalc_1.0-3 MASS_7.3-45      grid_3.2.3      
  [6] arm_1.8-6        nlme_3.1-124     stats4_3.2.3     coda_0.18-1      mi_1.0          
 [11] minqa_1.2.4      nloptr_1.0.4     Matrix_1.2-3     boot_1.3-17      splines_3.2.3   
 [16] lme4_1.1-11      tools_3.2.3      abind_1.4-3

//
- XQuarts は最新(2.7.8)ですか? -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-03-10 (木) 15:43:58};
- 仰るとおりでした。新しいものをインストールして,使用できるようになりました。 -- [[sem]] &new{2016-03-13 (日) 12:54:50};

#comment

**交互作用を含む重回帰分析の作図について。 [#m45f8da3]
>[[初学者]] (2016-02-28 (日) 17:31:37)~
~
統計言語Rについての質問です。~
~
y_a = a + b1*x1 + b2*x2 + b3*x1*x2 + e ~
y_b = a + b1*x1 + b2*x2 + b3*x1*x2 + e ~
~
重回帰分析で交互作用を検討し、上記のモデルのx2を平均値で固定した時に、~
x1を動かすとyの値がどう変化するかを、信頼区間も含めて2次元の図で表したいです。~
観測されたデータは100行(変数名含めず)で上50行は[class = a]で下半分[class = b]です。~
~
[class = a](または[class = b])だけに分けて、信頼区間含めた2次元の図は書くことができるのですが、信頼区間含め[class = a]と[class = b]を一枚で収めるためのプログラミングコードがわかりません。~
~
ggplotでもRの標準グラフィックでもどちらでも構いませんので、ご教授願います。~
申し訳ありませんが、OKwebでも同様の質問しております。http://okwave.jp/qa/q9135292.html~
&ref(216513.jpg);~
この画像は別々に画像をRから出力して、私が合成したものです。~
これをRだけで作るコードををご教授願います。~

//
- 応用が利くよう原始的な方法を用いて基本plotで作図した -- [[通りすがり]] &new{2016-02-29 (月) 11:32:10};
 data <- iris[-(51:100),]  # y: Sepal.Width, x1: Sepal.Length, x2: Petal.Length, class: Species
 model <- lm( Sepal.Width ~ Species * Sepal.Length * Petal.Length, data) # 重回帰
 agg <- aggregate(Petal.Length ~ Species, data, mean)       # classとx2代入用
 xpara <- seq(4, 8, 0.01)                                   # x1代入用
 
 a_conf <- predict(model, data.frame(Sepal.Length = xpara, Petal.Length=agg[1,2], 
   Species=agg[1,1]), interval="confidence")                # 予測値&信頼区間算出
 b_conf <- predict(model, data.frame(Sepal.Length = xpara, Petal.Length=agg[2,2], 
   Species=agg[2,1]), interval="confidence")
 
 plot(0, 0, xlim=c(4, 8), ylim=c(1.5, 5), type="n", ann=F)  # 点線版
  lines(xpara, a_conf[,1], col=2, lwd=2)
  for(i in 2:3) lines(xpara, a_conf[,i], col=2, lty=2)
  lines(xpara, b_conf[,1], col=4, lwd=2)
  for(i in 2:3) lines(xpara, b_conf[,i], col=4, lty=2)
 
 plot(0, 0, xlim=c(4, 8), ylim=c(1.5, 5), type="n", ann=F)  # 塗りつぶし版
  lines(xpara, a_conf[,1], col=2, lwd=2)       # col2 = FF0000
  lines(xpara, b_conf[,1], col=4, lwd=2)       # col4 = 0000FF
  polygon( c(xpara, rev(xpara)),  c(a_conf[,2], rev(a_conf[,3]) ),
    col="#FF000020", border=NA )
  polygon( c(xpara, rev(xpara)),  c(b_conf[,2], rev(b_conf[,3]) ),
    col="#0000FF20", border=NA )
- 上の通りすがりさんのように、αチャンネルで半透明にして重ねるのが順当だが、グラフィックディバイス依存なので、使っているディバイスによってはαチャンネルを指定しても、半透明にならないので注意(もしかすると、最近は事情が変わっているかも知れないが)。 --  &new{2016-03-08 (火) 12:31:59};

#comment

** arimaxモデルを使用し、予測を行った際の予測モデルのサマリーについて [#u69d85a2]
>[[limlim]] (2016-02-11 (木) 01:46:58)~
~
約2年前~前日までの数値より説明変数に日本の祝日・月・曜日を加え、1ヶ月先の予測値を出すようにしましたが、予測値の算出式を知りたかったのですが、各説明変数の係数と標準誤差(s.e.)しか表示されないようです。算出式(定数項+1次前の数値×自己相関係数+ホワイトノイズ+1次前の移動平均の係数×ホワイトノイズ+・・・・)というような表示の仕方はありますでしょうか? よろしくお願いします。
 xreg.train<- data.frame(
  is.holiday=jholidays.xts["::2015-11-30"],
  year=year(date.train),
  month=as.factor(month(date.train)),
  day=day(date.train),
  wd=weekdays(date.train)) %>%
  dummy.data.frame %>%
  select(-month1,-wd日曜日) %>%
  as.matrix
 fit.arimax.cal<- auto.arima(call.train.ts,seasonal=T,
  trace=Txreg=xreg.train)#arimaxモデルのフィッティング
 
 ARIMA(2,0,2) with non-zero mean : 11402.32
 ARIMA(0,0,0) with non-zero mean : 11664.95
 ARIMA(1,0,0) with non-zero mean : 11402.53
 ARIMA(0,0,1) with non-zero mean : 11451.06
 ARIMA(0,0,0) with zero mean     : 11665.87
 ARIMA(1,0,2) with non-zero mean : 11401.18
 ARIMA(1,0,1) with non-zero mean : 11403.75
 ARIMA(1,0,3) with non-zero mean : 11401.67
 ARIMA(2,0,3) with non-zero mean : 11404.22
 ARIMA(1,0,2) with zero mean     : 11400.29
 ARIMA(0,0,2) with zero mean     : 11417.95
 ARIMA(2,0,2) with zero mean     : 11401.2
 ARIMA(1,0,1) with zero mean     : 11403.12
 ARIMA(1,0,3) with zero mean     : 11400.76
 ARIMA(0,0,1) with zero mean     : 11450.95
 ARIMA(2,0,3) with zero mean     : 11403.14
 Best model: ARIMA(1,0,2) with zero mean     
 summary(fit.arimax.cal) Series: call.train.ts ARIMA(1,0,2) with zero mean
 
 Coefficients:
 
         ar1      ma1      ma2  is.holiday    year    month2    month3 以下略
      0.7803  -0.2321  -0.1964   -379.1346  1.5137  195.9081  272.9902  以下略
 s.e. 0.0837 0.0973 0.0656 42.8611 0.0387 96.4907 99.5181 101.4300 以下略
 
       month11   month12      day   wd火曜日  wd金曜日  wd月曜日 以下略
      147.3163  414.5067  -1.1747  -104.1835   61.3693   22.6069 以下略
 s.e. 93.0474 94.0236 1.5022 31.7203 31.6301 26.3375 32.3830 以下略
 
 sigma^2 estimated as 59126: log likelihood=-5675.48 AIC=11398.96  以下略
 
 Training set error measures: Training set ME -0.4521637 RMSE 243.158 以下略
以下が予測結果(抜粋)
 Forecasts:
 Forecast
 3529.367
 3404.598
 3385.364
 3563.843
以下が予測開始日の前日から4日前までのデータ(抜粋)
 3416
 3329
 3001
 3446

//

#comment

**ファイルの保存による処理速度の低下について [#dd175b38]
>[[はぶ]] (2016-02-05 (金) 11:42:30)~
~
以下のようにfor文内で文字列のベクトルをwrite()で一行ずつ上書き出力をしています。
 dat <- NULL
 for(j in 1:10) {
 	for(i in 1:(sample(3:8,1))) dat[i] <- paste(sample(letters, sample(3:5,1)),collapse="")
 	write(dat,"dat.csv",append=T,sep=",",ncolumns=length(dat))
 }
実際の文字列ベクトルdatは他のデータフレームから抽出しており最大で数千要素、~
添え字jのfor文のループ回数は数十万回のため処理速度を向上させたいと考えています。~
~
ループごとにメモリからハードディスクに書き込みを行うのではなく、あらかじめ10000行×10000列で初期化したmatrixに1万ループ分程度のdatを格納し、write.table()などでまとめて保存すれば高速化できると考えたのですが、この方法は妥当でしょうか。~
~
また、その場合は出力されるdatmatに初期化時の0が残るためファイルサイズが増えてしまいます。write()で一行ずつ出力した場合のように文字ベクトル以外はファイル中に含みたくないのですが、何か良い方歩はありますでしょうか。~
~
宜しくお願いします。~

//
- あらかじめ大きな配列を用意しておくとしても,実際に格納した行数を勘定しておいて write(dat[1:n,],  みたいにすればよいでしょう?&br;どうやって「他のデータフレームから抽出」しているのかわからないけど,for でやらない方法もあるんじゃない?よりよい方法のアドバイスを得るためにも,もう少し実際にやっていることに近いプログラムを示す方がよいと思います。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-02-05 (金) 11:56:10};

#comment

**自作関数の引数の書き出し [#f34f78d5]
>[[まるでダメ男]] (2016-01-29 (金) 19:08:55)~
~
失礼します。投稿文書の書式のリンクが無効で読み込めなく書き方がわからなかったので見にくいかもしれません。~
自作関数の引数を名前にした値を名前にして返り値で自動的に書き出したいと思ったのですが、関数内にwrite.csvを使っても書き出しされません。~
例えば、
 kakidasi<-function(a,b) {
      何らかの処理でxを得る
 return(x)
 write.csv(x, paste("~/Student_dat/",substitute(a), "_", substitute(b), ". csv", sep=""), fileEncoding="Shift-JIS")
 }
で処理を行っても得られるのはXだけです。フォルダに書き出しは行われていません。~
何か良いアドバイスをいただけますでしょうか。~

//
- すみません、write.csvの部分でsが入っていませんでした。しかし相変わらず書き出しはされません。 -- [[まるでダメ男]] &new{2016-01-29 (金) 19:22:11};
-  return が実行された時点で関数の処理が終了するためです(http://cse.naro.affrc.go.jp/takezawa/r-tips/r/31.html)。 --  &new{2016-01-29 (金) 20:40:50};
- ↑の人が仰るとおりです。return と writre.csv の順序を入れ替えないとだめですね。このままでは,write.csv は実行されません(気の利いたシステムでは「write.csv は実行されませんよ」というエラーメッセージを出すこともありますが,R ではそのような対応がないのですね)~
ちなみに,どうでもいい(?)ことではあるんですが,fileEncoding="Shift-JIS" は fileEncoding="cp932" とされたほうが,今後起こりうるトラブル回避のためにはよろしいかも。~
また,
 paste("~/Student_dat/",substitute(a), "_", substitute(b), ". csv", sep="")
では,当然ながら . と csv の間に空白がありますので,トラブルのもとになるでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-01-29 (金) 21:02:59};

#comment

**エラー:  引数の長さが 0 です [#gfcbbe9d]
>[[まるでダメ男]] (2016-01-15 (金) 18:59:21)~
~
失礼いたします。ただいま自作の関数を作成しました。~
以下の関数を動作してみたところ
 if (amoji_retsu >= bmoji_retsu) { でエラー:  引数の長さが 0 です
とのメッセージが出ました。
 mojiretsu_hyouka <- function(a, b, sansyo) {
 	gyou_num1 <- as.integer(rownames(a)) # aの行数全て
 	gyou_num2 <- as.integer(rownames(b)) # bの行数全て
 	l <- expand.grid(gyou_num1, gyou_num2) # 全ての組み合わせパターン(gyou2)を起点に繰り返す
 	upto <- nrow(l) # lの行数
 	k <- 1
 	Jaccardの類似度表 <- NA
 	while (k <= upto) {
 		moji_a <- as.character(a[l[k, 1], 1]) # aの文字列をlの組み合わせで順に実行していく
 		moji_a_kaisuu <- as.integer(a[l[k, 1], 3])
 		moji_b <- as.character(b[l[k, 2], 1]) # bも同様に
 		moji_b_kaisuu <- as.integer(b[l[k, 1], 3])
 		amoji_retsu <- which(colnames(sansyo) == moji_a) # moji_aがある列番号を取り出す
 		bmoji_retsu <- which(colnames(sansyo) == moji_b) # moji_bがある列番号
 		amoji_gyou <- which(sansyo$id == moji_a) # moji_aがある行番号を取り出す
 		bmoji_gyou <- which(sansyo$id == moji_b) # moji_bがある行番号
 		if (amoji_retsu >= bmoji_retsu) {
 			Jaccardの値 <- sansyo[amoji_gyou, bmoji_retsu]
 			h <- data.frame(paste(moji_a, moji_b, sep = "_"), moji_a,
                                moji_a_kaisuu, moji_b, moji_b_kaisuu, Jaccardの値)
 			Jaccardの類似度表 <- cbind(Jaccardの類似度表, h)
 		} else {
 			Jaccardの値 <- sansyo[bmoji_gyou, amoji_retsu]
 			h <- data.frame(paste(moji_a, moji_b, sep = "_"), moji_a, 
 				moji_a_kaisuu, moji_b, moji_b_kaisuu, Jaccardの値)
 			Jaccardの類似度表 <- cbind(Jaccardの類似度表, h)
 		}
 		k <- k + 1 # カウント
 	}
 	return(invisible(Jaccard係数の類似度表))
 }
この関数の引数,a,b,sansyoは
 > head(a)
       抽出語     品詞 出現回数
 1         身    名詞C       42
 2       問題 ナイ形容       41
 3       なる    動詞B       39
 4     つける    動詞B       38
 5 リスニング     名詞       37
 6     解ける     動詞       32
 > mode(a)
 [1] "list"~
これと同じ形の引数 b~
それと3つ目の引数sansyoは
     id          基本       法則        概要       概念       特徴 原理 基礎
 1 基本          NA         NA          NA         NA         NA   NA   NA
 2 法則      0.024         NA          NA         NA         NA   NA   NA
 3 概要     0.005   0.0000          NA         NA         NA   NA   NA
 4 概念      0.040    0.030         0.0069   NA         NA   NA   NA
このような形の縦横5422のデータベースです。
 > mode(sansyo)
 [1] "list"~
また、そもそも引数はこのようなリスト型でも良いのでしょうか?~
環境は以下のようになっています。
 sessionInfo() 
 R version 3.2.2 (2015-08-14)
 Platform: x86_64-apple-darwin13.4.0 (64-bit)
 Running under: OS X 10.11.1 (El Capitan)
では、宜しくお願いします。~

//
- データはリストで与えてもよいでしょうが,私はデータフレームにしました(データフレームもリストですが)~
 a <- data.frame(抽出語 = c("つける", "なる", "リスニング", "解ける", 
 "身", "問題"), 品詞 = c("ナイ形容", "動詞", "動詞B", 
 "名詞", "名詞C"), 出現回数 = c("抽出語", "品詞", 
 "出現回数"))
 b <- 省略
 sansyo <- structure(list(id = structure(c(3L, 4L, 2L, 1L), .Label = c("概念", 
 "概要", "基本", "法則"), class = "factor"), 基本 = c(NA, 
 0.024, 0.005, 0.04), 法則 = c(NA, NA, 0, 0.03), 概要 = c(NA, 
 NA, NA, 0.0069), 概念 = c(NA, NA, NA, NA), 特徴 = c(NA, NA, 
 NA, NA), 原理 = c(NA, NA, NA, NA), 基礎 = c(NA, NA, NA, NA
 )), .Names = c("id", "基本", "法則", "概要", "概念", 
 "特徴", "原理", "基礎"), class = "data.frame", row.names = c("1", 
 "2", "3", "4"))
バグを発見するには,主要な場所で,変数がどのようになっているかを print 文を挿入するなどして確認していくのがよいでしょう。~
例えば,
 amoji_retsu <- which(colnames(sansyo) == moji_a) # moji_aがある列番号を取り出す
では,最初にこの文が実行されたあと,
 colnames(sansyo) :
 [1] "id"   "基本" "法則" "概要" "概念" "特徴" "原理" "基礎"
 moji_a = 身 
 amoji_retsu :
 integer(0)
となります。提示されたデータでは colnames(sansyo) に moji_a が含まれないので,amoji_retu は integer(0) になっています。あなたの実際のデータでも,そのような場合があるのです。そしてその結果を使って if (amoji_retsu >= bmoji_retsu) のような,比較をすることができない(引数の長さが 0 です)ということになります。そのような場合にはどのように処理するかというプログラム部分を追加しないといけませんね。~
なお,プログラムを見るときに,綺麗に書かれていないと非常に見にくく,バグを発見することも難しくなります。丁寧に書きましょう。質問自体,書き直しておきます。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-01-15 (金) 19:17:55};
- 河童の屁は,河童にあらず,屁である。様 どうもご丁寧にありがとうございます。sansyoの部分にmoji_aが含まれていないようですね。とても助かりました。今から手直しをしてみようと思います。プログラムの書き直しもありがとうございました。では、失礼します。 -- [[まるでダメ男]] &new{2016-01-15 (金) 19:49:32};

#comment

** エラー: Unknown parameters: familyと表示されグラフが出力できません。 [#m0bdc8f6]
>[[初学者]] (2016-01-10 (日) 15:18:37)~
~
 library(MASS)
 b <- biopsy
 b$classn[b$class==“benign”] <- 0
 b$classn[b$class==“malignant”] <- 1
 
 ggplot(b, aes(x=V1, y=classn)) + geom_point() + geom_smooth(method = glm, family = binomial)
 
  エラー: Unknown parameters: family
上記のようにRグラフィッククックブックのコードに従って、グラフを出力しようとしたところ、エラーが表示されてしまいグラフをを出力できません。このエラーの解決方法をご教授願います。~

//
- ggplot なんか使わないんだけど,geom_smooth のオンラインヘルプの中の例「## Not run: 」と書かれている部分の例を見ると,geom_smooth は,geom_smooth(method = "glm", method.args = list(family = "binomial")) って書かないといけないんじゃ?そのようにすると一応,エラーメッセージ無く,それらしい図が描かれるけど? -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-01-10 (日) 17:53:50};
- method.args = list(family = "binomial"))で書くと問題なく、グラフが出力されました。ありがとうございます。 -- [[初学者]] &new{2016-01-10 (日) 18:35:37};

#comment

**連続変数データにおけるlocalprob の解釈について [#gcfa083f]
>[[わっと]] (2016-01-08 (金) 18:14:05)~
~
ベイジアンネットワークのパッケージ deal において、localprob というコマンドを実行すると、作成したベイジアンネットワークモデルに対して、離散型のデータの場合は変数間の条件付確率が返されて、連続型のデータの場合は回帰係数が返されるらしいのですが、その回帰係数の解釈がよくわかりません。~
~
分析に使ったデータは、2014年のプロ野球のデータ(一部はゲーム内における選手の能力値)で、変数は能力値であるミート、パワー、走力、肩力、守備力、捕球の6つと、選手の年俸、身長、体重、年齢、本塁打数、安打数、三振数、盗塁数、失策数が9つの合計15の連続変数を用いて分析をしました。~
~
肩力についての回帰係数を見てみると、
 $肩力
          [,1]     [,2]       [,3]
 [1,] 63.25038 57.33878 0.07894247
しかし、作成したベイジアンネットワークモデルにおいての有向辺が引かれているのは、7列目の変数の守備力から、6列目の肩力に対してだけです。~
すると、回帰係数は1つだけ表示されると思うのですが、なぜ3つ出力されているのでしょうか?~
~
また、表示された回帰係数はどのように解釈すればよいのでしょうか?~

//
- 「肩力」って,どんな風な値を取る変数ですか?例えば,「弱い」〜「強い」の4段階を表すカテゴリーでは?deal, localprob は知らないし知りたくもないけど,base の lm と同じように扱われるなら,最初のカテゴリーをベース(0)として,2番目以降のカテゴリーに対する回帰係数では?示された回帰係数の増減傾向を見ると,この関数では「一番最後のカテゴリーをベースとする」ということになっているのかな。オンラインヘルプで localprob についての説明をよくお読みになることをお勧めします(ネットでの localprob の検索もお忘れなく)~
いま,ちょっと見たところでは,
 http://d.hatena.ne.jp/araili/20100603/1275547994
の例にあるように,ベースの設定はせずに,各カテゴリーへの回帰係数が表示されるのかな?つまり,あなたの「肩力」が3カテゴリーならそういうこと。4カテゴリーなら「最後のカテゴリーがベースになっている」~
いずれにせよ,ある分析法を採用したら,「解釈がよくわかりません」なんていうのは論外!!ということ。自分で責任もって調べなさい。というか,そういうことは事前にクリアしてから分析方法を選択し,分析すべきこと。「恥ずかしい」ことですよ。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-01-08 (金) 21:08:03};
- 回答ありがとうございます。肩力などの能力値は、1~100までの値をとります。 もう少し自分で調べてみて、それでも分からなければまた質問させていただこうと思います。失礼いたしました。 -- [[わっと]] &new{2016-01-08 (金) 22:45:54};


#comment

**変数変換の方法について [#jc656140]
> (2016-01-03 (日) 01:45:45)~
~
前提:下記二種類のデータフレームA,Bがあるとします。~
~
A.変数xを保持するデータフレーム
 x
 0.0
 0.1
 ...
 9.9
※0.0-9.9は例であり実際は色々なる値を取ります。~
~
B.変数xの区間と変換方法(切片と傾き)を保持するデータフレーム
 start end intercept coefficient
 0.0 0.3 5.0 1.0
 0.3 0.9 4.7 2.0
 1.5 2.0 3.0 4.0
 ...
※上記の区間は重なり合うことはありませんが、歯抜けになることがあります。~
※レコード数は固定ではなく可変です。~
~
やりたいこと:~
1.データフレームBに基づきデータフレームAの変数xに変換処理をする。~
具体的には変数xがデータフレームBのstart-endに該当すれば~
 intercept+coefficient*x
に変換する。~
~
2.データフレームBのstart-endに該当しない区間がデータフレームAの変数xに存在する場合、線形補完して変換する。~
上記データフレームBの場合、区間0.9-1.5が存在しないので
 start end intercept coefficient
 0.3 0.9 4.7 2.0
 1.5 2.0 3.0 4.0
の両端を結んだ直線で変換処理を行う。~

//
- 「一行でできる!」なんてうまい方法はないので,地道にプログラムすればよいだけ。うまく書こうとせず,わかりやすく?書いたプログラムを以下に。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2016-01-03 (日) 10:36:21};
 a <- data.frame(x=seq(0, 2.2, by=0.1))
 b <- data.frame(start=c(0.0, 0.3, 1.5), end=c(0.3, 0.9, 2.0),
                 intercept=c(5.0, 4.7, 3.0), coefficient=c(1.0, 2.0, 4.0))
 y <- data.frame(t(apply(b, 1, function(z) z[3]+z[1:2]*z[4]))) # 各区間の両端での y 座標
 b3 <- b[1,] # 歯抜けの区間を補間する(区間での intercept と coefficient を求める)
 for (i in 2:nrow(b)) { # i = 3 のとき
 	if (b$start[i] != b$end[i-1]) { # b$start[3] = 1.5, b$end[2] = 0.9
 		x.s <- b$end[i-1] # 0.9
 		y.s <- y$end[i-1] # 6.5 
 		x.e <- b$start[i] # 1.5
 		y.e <- y$start[i] # 9.0
 		Coefficient <- (y.e-y.s)/(x.e-x.s) # (9.0-6.5)/(1.5-0.9) = 4.16667
 		Intercept <- y.s-x.s*Coefficient # 6.5-0.9*4.16667 = 2.75
 		b3 <- rbind(b3, c(x.s, x.e, Intercept, Coefficient))
 	}
 	b3 <- rbind(b3, b[i, ])
 }
 n = length(a$x)
 y = numeric(n)
 for (i in seq_along(y)) { # 該当区間での変換結果 y を求める
 	x = a$x[i]
 	j <- which(b3$start <= x & x <= b3$end)
 	if (length(j)) {
 		y[i] <- b3$intercept[j[1]]+x*b3$coefficient[j[1]]
 	} else {
 		y[i] <- NA
 	}
 }
 y
- わかりやすいプログラムありがとうございます。 --  &new{2016-01-03 (日) 22:09:05};

#comment

**RExcel のインストールが上手くいかない [#scf29662]
>[[初心者R]] (2015-12-30 (水) 20:38:31)~
~
データ解析にRを利用したくRExcelの導入を試みました。~
R-3.2.3とstatconnDCOMをインストール後、R上でrscproxyのパッケージをインストールし、~
rcomをダウンロードすると~
警告メッセージ:~
package `rcom` is not available~
と表示されます。~
~
またrcomを無視してRExcellnst3.2.15をインストールして起動してみましたが、~
No R server configuredと表示されて、起動できませんでした。~
~
RAndFriendsは消えてしまったようで、RExcelのダウンロード手順も検索しても新しい物が見当たらず困っております。~
(R, Excelは管理者権限で実行しています)~

//
- > rcomを無視してRExcellnst3.2.15をインストール~
無視って...そんな...ひどい...~
何十回も何百回もやるんじゃないのなら,Excel で csv ファイルで保存して,R で処理すればよいと思います -- [[ ]] &new{2015-12-30 (水) 21:17:11};
- 申し訳ないです。無視というよりは、見当たらなかったので、無い状態でも出来ないか試したという感じです。かなりの回数データの移動を行なうので、RExcelを利用したいのです。 -- [[初心者R?]] &new{2015-12-31 (木) 13:39:56};
- RExcelにこだわらず,readxlパッケージでも使ってみたらいかがでしょうか? -- [[ふしぎ]] &new{2015-12-31 (木) 14:43:03};
- 私はどれをお勧めと言うことはできないですが,奥村先生のページ「RでExcelのデータを読む方法」&br;https://oku.edu.mie-u.ac.jp/~okumura/stat/exceldata.html &br;を参考になされば? -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-12-31 (木) 15:22:13};
- 皆さま、ありがとうございます!教えていただいたほかの方法を試してみます! -- [[初心者R]] &new{2016-01-01 (金) 19:16:14};

#comment

**パッケージをインストールはできるが、パッケージの読み込みに追加されない [#r4219bb9]
>[[わっと]] (2015-12-25 (金) 21:05:53)~
~
初投稿です。~
Rパッケージを最新版に更新したら、どうやらパッケージが初期化されてしまったみたいで、もう一度インストールをしようとしました。
 パッケージ ‘deal’ は無事に展開され、MD5 サムもチェックされました 
 警告:   一時的なインストール ‘C:\Users\wataru\Documents\R\win-library\3.2\file12c02e8d32da\deal’ を ‘C:\Users\wataru\Documents\R\win-library\3.2\deal’ へ移動できませんでした 
 
 ダウンロードされたパッケージは、以下にあります 
        C:\Users\wataru\AppData\Local\Temp\Rtmp4O0dGX\downloaded_packages 
 警告メッセージ: 
 download.file(url, destfile, method, mode = "wb", ...) で: 
   ダウンロードされた長さ 189305 != の報告された長さ 200 です 
このように、パッケージdealをダウンロードすることはできたのですが、パッケージの読み込みのところを見ても、dealが追加されていません。どうすればよいのでしょうか?~
ちなみに、Rを初めてインストールしたのは去年の五月で、今回初めて更新しました。使用OSはwindows10です。~

//
- よく知らないのだけど,R 自体がなんか変なところにインストールされているようで(C:\Users\wataru\Documents\R 以下か?)ちょっとやり直した方がいいのかな? -- [[ ]] &new{2015-12-25 (金) 22:02:38};
- ただの警告メッセージ(ただのバグ)ですから無視して, library("deal") を行ってください. M$上では通常R_LIBSに書き込み権限が無いので,通常ならばR_LIBS_USERにインストールすることになるので,ドキュメントの配下にプログラムがインストールされる仕様になっています.[[rw-FAQ 4.2:https://cran.r-project.org/bin/windows/base/rw-FAQ.html#I-don_0027t-have-permission-to-write-to-the-R_002d3_002e2_002e3_005clibrary-directory]] --  &new{2015-12-26 (土) 20:14:00};

#comment

**連番の変数の使用 [#yf9248f4]
> (2015-12-22 (火) 01:37:05)~
~
連番の変数をassign()を使用して、それぞれにcsvを読み込みました~
read.csv以下:datayardはcsvのあるフォルダ名が代入~
file.nameはcsvの名前の共通部分~
sort_listに各csvの異なる数字が格納されています。
 for(j in 1:nrow(sort_list)) {
   assign(paste("data", j, sep=""), read.csv(paste(datayard, file.name, sort_list[j, ], ".csv", sep=""), header=T))}
これによってdata1,data2という変数に異なるcsvを読み込みました。~
ここからが困っているところなのですが、~
各data1,data2の同じ列のデータだけ取り出して一つの変数に代入したいのですが、dataの数が少ないときは
 > data <- cbind(data1[, 1], data2[, 1])
という風にやれば望む形になるのですが、すべての列についてやりたいのと、data1~100を超えるので、ループで変数も連番でまとめたいのですが~
イメージでは~
 for(i in 1:100) {
   data <- cbind(data, datai[, 1])
 }
という風にやりたいのですが、どうやったらいいのでしょうか?~

//
- 違う物を違う名前に読み込むというのは,自然のように見えるが,プログラム的には非常にマズイ方法。アクセスするときに,個別の名前を列挙しないといけなくなるのだから。また,後で使う必要がないなら,別々の変数に読み込む必要すらない。~
以下のようにすれば,何の問題もない。できあがるものも,一つのデータフレームなので列ごとに分解する必要もなく,d[,1], d[,i] のようにアクセスも普通にできる。別の変数に代入したいならすればよい。~
以下のような形式の csv ファイルがある test1.csv, test2.csv, test6.csv, test9.csv,...~
あなたの場合なら,sort_list <- c(1, 2, 6, 9,...) となっている(欠番が無ければすこし簡単)。~
test1.csv 5 行のデータ
 "a","b","rnorm"
 1,"a",-0.252631231784056
 2,"b",0.650075900149871
 3,"c",-0.639124667772796
 4,"d",1.57159006714947
 5,"e",-1.10845059755105
このようなデータを読み込んで,一つのデータフレームに連結(rbind)してゆく
 datayard <- "~/R/"
 file.name <- "test"
 sort_list <- c(1, 2, 6, 9)
 d <- NULL
 for (j in sort_list) {
    temp <- read.csv(paste0(datayard, file.name, j,".csv"))
    d <- rbind(d, temp)
 }
d を表示すると
     a b       rnorm
 1   1 a -0.25263123
 2   2 b  0.65007590
 3   3 c -0.63912467
 4   4 d  1.57159007
 5   5 e -1.10845060
 6   6 f -1.01847370
   :
 19 19 s  1.88522585
 20 20 t  0.84095473
というようになっていることが確認出来ますね。~
そのほかに,あとで個々のデータフレームも使いたいというなら,それぞれをリスト要素に読み込んでいって,Reduce で結合するという手もあります。
 d <- vector("list")
 for (j in sort_list) {
   d[[j]] <- read.csv(paste0(datayard, file.name, j,".csv"))
 }
 d2 <- Reduce(rbind, d)
要するに,for ループや,*apply 関数で扱いやすいようにプログラムするのです。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-12-22 (火) 06:49:15};
- 古典的な方法としては, do.call で引数展開するのが良いように思います. do.call("cbind",lapply(paste("data", 1:nrow(sort_list), sep=""),function(x)get(x)[,1])) -- [[ワンライナー]] &new{2015-12-22 (火) 12:38:16};

#comment

**グラフの描画法 [#a57d0888]
>[[名無しさん]] (2015-12-20 (日) 19:14:49)~
~
rで最小0、最大100の範囲で整数の一様乱数を1万個発生させ、その群をaとしました。table(a)でどの値が何個出てきたのかを調べるまではできたのですが、それをグラフにするやり方が分かりません。グラフについて詳しく言うと、横軸が整数値(0~100)、縦軸が発現回数で線は曲線にしたいです。どのようなコマンドを入力すればよいのでしょうか。~

//
- 第1に,投稿先が不適切だったので,ここへ移しました。第2に,「線は曲線に」って,この場合は折れ線にしかならないですけど。度数多角形を描きたいということなんでしょうか?&br;plot 関数でよいのですが,第二引数に table 関数の戻り値をそのまま描くと変なことになるので c 関数を使うのがポイントでしょう(c 関数でなくてもよいけど)。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-12-20 (日) 19:24:21};
 a <- sample(0:100, 10000, replace = TRUE)
 b <- table(a)
 plot(0:100, c(b), type = "l", ylim = range(b),
      ylab = "発現回数", xlab = "X")
&ref(freq.png);

#comment

**データ数の異なる二元配置の分散分析の結果について [#rf2b3028]
>[[tao]] (2015-12-15 (火) 18:16:40)~
~
初等的な質問で申し訳ございません。
以下のようなデータで
 > test
    A B     C
 1  1 1  8118
 2  1 1  1785
 3  1 1  2122
 4  1 2  9448
 5  1 2  8237
 6  1 2 17868
 7  1 2 33593
 8  1 2     0
 9  2 1 14015
 10 2 1   632
 11 2 2   947
 12 2 2   330
 13 2 2  5444
 14 2 2  4140
 15 3 1  2419
 16 3 2   396
 17 3 2  7809
 18 4 1  2657
 19 4 2   362
 20 4 2     0
 21 5 1   412
 22 5 1  6637
 23 5 2  2269
 24 5 2  3873
 25 5 2  2376
 26 5 2 10303
 
 test<-read.csv(file="test7.csv",header=TRUE)
 summary ( aov (C~A*B, data=test) )
 summary ( aov (C~B*A, data=test ) )
というコマンドを実行すると
 > summary ( aov (C~A*B, data=test) )
             Df    Sum Sq   Mean Sq F value Pr(>F)
 A            1 1.392e+08 139199274   2.676  0.116
 B            1 2.728e+07  27281060   0.524  0.477
 A:B          1 4.053e+07  40530623   0.779  0.387
 Residuals   22 1.144e+09  52017772               
 > summary ( aov (C~B*A, data=test ) )
             Df    Sum Sq   Mean Sq F value Pr(>F)
 B            1 2.369e+07  23693485   0.455  0.507
 A            1 1.428e+08 142786849   2.745  0.112
 B:A          1 4.053e+07  40530623   0.779  0.387
 Residuals   22 1.144e+09  52017772               
という結果がでてきて、交互作用については、一致するのですが、主効果の結果が違ってしまいます。~
データセットの並べ方を変えてBの項目を先に並べても同じ結果となってしまいます。~
これは何がいけないのでしょうか。~
何か、ご存じの方がいらっしゃいましたら、お教え頂ければ幸いです。~

//
- 要因が直交していない場合には,aov では Type I の平方和を用いるのでどちらを先にするかで結果が変わります。car パッケージの Anova 関数では Type II,Type III が使えます。Type II の平方和(SS)によれば,A*B でも B*A も,どちらも同じになります(Type II がデフォルトなので指定しなくてもよい)。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-12-15 (火) 19:08:53};
 > library(car)
 > Anova(aov (C~A*B, data=test ), type="II")
 Anova Table (Type II tests)
 
 Response: C
               Sum Sq Df F value Pr(>F)
 A          142786849  1  2.7450 0.1118
 B           27281060  1  0.5245 0.4766
 A:B         40530623  1  0.7792 0.3869
 Residuals 1144390976 22               
 
 > Anova(aov (C~B*A, data=test ), type="II")
 Anova Table (Type II tests)
 
 Response: C
               Sum Sq Df F value Pr(>F)
 B           27281060  1  0.5245 0.4766
 A          142786849  1  2.7450 0.1118
 B:A         40530623  1  0.7792 0.3869
 Residuals 1144390976 22
- 貴重なご指摘ありがとうございます。自分の勉強不足を恥じ入ります。本当にありがとうございました。 -- [[tao]] &new{2015-12-16 (水) 11:21:33};

#comment

**コピペでpar()を入れるとエラー [#u141f54d]
>[[R初心者]] (2015-12-08 (火) 21:08:40)~
~
Mac OSX上でRを動かしています。~
棒グラフを書く際に、余白の調節をしようとpar(mar=)をコマンドに加えたいと考えています。~
しかし、実際にやってみると~
~
par(mar = c(10,3,2,2))                            ~
 エラー:  想定外の入力です  in "par(mar = c(10,3,2,2))
~
このようなエラーが出るため余白の調節がされないままにグラフが出力されてしまいます。~
一方で、データの取り込みからグラフの出力までをコピペで一気にせず、~
グラフの取り込み→par(mar=)→barplot()とすると上手くいきます。~
この理由が何なのか、また一度のコピペで綺麗に出力する方法があるのか知りたいです。~
周りにRを使っている人がおらず、自分で調べてもよくわかりませんでした。~
やはり、Mac上で動かしていることが原因なのでしょうか。~
~
何かご存知の方がいらっしゃいましたら、知識を分けていただけると幸いです。~
よろしくお願い致します。~

//
- よくわかりませんが,以下のようなものをコピー・ペーストしてもエラーが出るのですか?
 tbl <- table(iris$Species)
 par(mar = c(10,3,2,2))
 barplot(tbl)
この入力ではエラーが出ないなら,あなたがやった一部始終をこぴぺしてみれば?&br;
> やはり、Mac上で動かしていることが原因なのでしょうか。~
なんで,そんな無関係なことを言う必要があるのか?被害妄想,風評被害,少数者迫害意識。~
本当にそう思うなら,Windows にすればよいだけ。大衆迎合,烏合の衆,強いものには巻かれる,安定志向,寄らば大樹の陰。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-12-08 (火) 21:51:27};
- 返信ありがとうございます。指示いただいたものについては正確に表示されました。 -- [[初心者]] &new{2015-12-09 (水) 09:06:02};
 data <- read.table("サンプル",header = T, row.name = 1, sep = ",")      #dataの取り込み
 data <- as.matrix(data) # matrixへの変換
 data <- t(data) # 行列の入れ替え
 data.mean <- apply(data, 2, mean, na.rm =T) # グラフの平均値(グラフの高さの算出)
 data.sd <- apply(data, 2, sd, na.rm = T) # 誤差範囲
 par(mar = c(10,3,2,2)) #余白の計算
 data.graph <- barplot(data.mean, main =  "名前 ",
               ylim = c(0,max(data.mean+data.sd)*1.1),
               ylab = "Relative gene expression level",
               col = c("1","8","1","8","1","8","4","2"), 
               font.axis = 15, cex.lab = 1.2, cex.axis = 1.2, las = 2) #グラフの作図
 arrows(data.graph, data.mean - data.sd, data.graph,
        data.mean + data.sd, angle = 90, length = 0.1) # 正のエラーバー作図
 arrows(data.graph, data.mean + data.sd, data.graph,
        data.mean - data.sd, angle = 90, length = 0.1) # 負のエラーバー作図
- 本掲示板でプログラムを提示するときの規則を確認してください。直しましたが,エラーの本質部分は残してあります。&br;par( ) の行の最後の括弧から,全角空白が複数個あり,# も全角です。そのため,par が正しく解釈されていないのです。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-12-09 (水) 10:39:05};
- 申し訳ございません、本掲示板も最近知った者で、これからは気をつけます。半角に直しましたところうまくいきました。ありがとうございます! -- [[初心者]] &new{2015-12-09 (水) 11:33:12};

#comment

**回帰分析(型 (NULL) は変数 'x1' に対しては不正です ) [#x2c31f3f]
>[[初心者]] (2015-11-28 (土) 11:31:03)~
~
 model.frame.default(formula = y ~ x1 + x2  でエラー: 
    型 (NULL) は変数 'x1' に対しては不正です 
重回帰分析を実行すると、上記のエラーメッセージが表記されます。~
エクセルでデータセット(csv形式、21行4列)を作成しました。~
1行目は変数名です。また、1列目〜4列目までは
 id:Factor
 y:int
 x1:int
 x2:int
という型式です。
 > data<-read.csv("sample.csv",header=TRUE)
 >lm(y~x1+x2, data=data)
 
 model.frame.default(formula = y ~ x1 + x2  でエラー: 
    型 (NULL) は変数 'x1' に対しては不正です 
このようなエラーが発生してしまう原因をお教えいただければ幸いです。~
よろしくお願いします。~

//
- > 1列目〜4列目までは ... という型式です。&br;というのは,str(data) で確かめたということですか?&br;21 行のデータなら,ここへそのデータをアップしてみれば?というか,data をプリントアウトしておかしなことはみあたりませんか? -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-11-28 (土) 21:41:02};
- 返信ありがとうございます。str(data)でチェックしました。プリントアウトしてもおかしな点はなかったです。Rではできなかったのですが、Rstdioでは実行できました。 -- [[初心者]] &new{2015-11-29 (日) 14:06:35};
- > Rではできなかったのですが、Rstdioでは実行できました&br;不思議ですねえ。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-11-29 (日) 21:38:33};

#comment

**重回帰分析における as.factor() の出力結果についての質問 [#odbde724]
>[[まつ]] (2015-11-26 (木) 16:46:40)~
~
申し訳ありません R 使いたての初心者です~
~
単純な重回帰分析で実験ケースごとのカテゴリー変数を投入したいと考えています。
 result<-lm(dependent~ hoge + as.factor(sortcase))
 summry(result)
と記述しました。これを実行してみると
                        Estimate Std. Error t value Pr(>|t|)    
 (Intercept)            0.1213389  0.0039691  30.571  < 2e-16 ***
 hoge                   0.0300854  0.0080421   3.741 0.000184 ***
 as.factor(sortcase)2   0.2413299  0.0074716  32.300  < 2e-16 ***
 as.factor(sortcase)3  -0.0124357  0.0080555  -1.544   0.122657    
 as.factor(sortcase)4  -0.1181738  0.0089075 -13.267  < 2e-16 ***
と結果が返されます。~
as.factor(sortcase)1 が推定されないのはなぜですか?~
Intercept と同じだからでしょうか~
~
教えて貰えれば幸いです~

//
- この場合(カテゴリー変数が 1 個の場合)は,intercept に当たります。複数の Factor 変数を使うと分かりますが,1番目のカテゴリーはベースラインとされているからです。(Estimate が 0)。つまり,1番目のカテゴリーの係数を 0 としたときに,2 番目のカテゴリーの係数はそれより 0.2413299 大きく,3 番目のカテゴリーの係数はそれより -0.0124357 小さい...などということを表しているんです。~
なお,数学的にいえば,1番目のカテゴリーも含めると正規方程式が解けない(ランク落ちする)ので,どれか 1 つのカテゴリーをモデル式から消去する必要があるということです(何番目のカテゴリーを消去しても結果は同じ)。-- [[河童の屁は,河童にあらず,屁である。]] &new{2015-11-26 (木) 18:27:18};
- なるほど、非常にわかりやすい説明ありがとうございました。Rの大学教科書にも乗っておらず、調べた英語サイトも「 Intercept だ」という一言だけで理屈でどういう仕組なのか分からず困っていたとこでした。本当にありがとうございました。 -- [[まつ]] &new{2015-11-26 (木) 20:24:09};

#comment

**複数の01データの分布を一覧するには? [#a302a05a]
>[[たけ]] (2015-11-25 (水) 09:39:01)~
~
~
お世話になります。01データ、あるいは数カテゴリのみのカテゴリカルデータ同士の分布と関係性を容易に一覧する方法をご存じでしたらお教えいただければ幸いです?~
連続変数であれば相関係数行列cor(x)やplot(x)とすれば分布と関係性を大まかに一覧できますが、01データの場合、距離行列dist(x)と共起ネットワーク図plot(network(x))くらいしかないでしょうか?~

//
- 自己レスですが、01も連続変数もだとGeneralized Pairs Plot https://biostatmatt.com/archives/2398、カテゴリカルと連続変数であればggpairs、01データだけならsjp.corr、カテゴリカルデータだけならR-blogger掲載のCorrelation scatter-plot matrixのコードhttp://www.r-bloggers.com/correlation-scatter-plot-matrix-for-ordered-categorical-data/が使えそうです。 --  &new{2015-11-25 (水) 10:51:37};

#comment

**行列の見出しと行数で数字を抽出 [#y9d8ba45]
>[[Rに困った]] (2015-11-18 (水) 17:01:20)~
~
 a=matrix(c(4,3,3,4,2,2,4,1,1),3,3)
とし,
   |4 3 3|
 a=|4 2 2|
   |4 1 1|
のように行列を作成後,
 colnames(a)=("A","B","C")
とし,
    A B C
   |4 3 3|
 a=|4 2 2|
   |4 1 1|
とします.~
ここから,C列(3,2,1)の[要素]情報を使って~
aの配列にアクセス:~
a[1,]の3列目,~
a[2,]の2列目,~
a[3,]の3列目~
すなわち,c(3,2,4)を取り出したいのですが,~
どなたかよい方法をご教授いただけないでしょうか?


//
- 「Aの1行目は何になるか?のように,それぞれ調べる方法」?列を列名で指定したいということですか?&br;a[1,"A"] とか a[2,"B"] とかすればよいだけですよ。&br;どうしても,「Aの1行目は何になるか?」のように順序にこだわるならば,a[,"A"][1] としてもよいですが,冗長ですよね。&br;なお,例示されたように a を作るならば,a=matrix(c(4,3,3,4,2,2,4,1,1),3,3, byrow=TRUE) としなければならないし,colnames の右辺は c("A","B","C") でなければならないというのは,うっかりミスということで済むでしょうが,投稿記事を私が直したので,今は背景が薄水色で表示されている部分のようにするためには,どのように記事を作成すればよいかは,自分で調べて今後はそれにしたがってください。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-11-18 (水) 17:12:03};
- かってに,質問を書き換えてくれると,私がとんちんかんなことをいっていることになるんだが??~
この上の回答は,~
 A列の1行目は4,B列の2行目は2,C列の3行目は1となると思います.~
 Aの1行目は何になるか?のように,それぞれ調べる方法はありますでしょうか?~
 お手数ですが,どなたかご回答宜しくお願い致します.~
だったので,それに答えた。~
書き換えられた質問と回答の例示が合わない。ちゃんと質問しないと相手にしてもらえなくなりますよ。~
「a[3,]の3列目」ではなくて,「a[3,]の1列目」なんでしょう?そもそも,「A列の1行目」とか,「a[3,]の1列目」といういいかた自体が変なんだけど。~
そうだと仮定して,
 > a[cbind(1:3,a[,3])]
 [1] 3 2 4
でしょう? -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-11-18 (水) 17:30:37};
- 大変申し訳ありません.RjpWiKi初心者のため,操作を誤ってしまいました.以後気をつけたいと思います. -- [[Rに困った]] &new{2015-11-18 (水) 17:41:36};

#comment

**heatmap図のlegendの描写位置について [#g168b931]
>[[かがみ]] (2015-11-16 (月) 16:52:13)~
~
お世話になります。
 data(iris)
 heatmap(as.matrix(iris[,1:4]))
 legend("topleft", colnames(iris)[1:4])
legendの枠を左上の余白に作成して図に被らないようにしたいのですが、どのようにすればよいでしょうか。おそらくheatmap図の左上の領域は余白になっているために、legendを描けないようなのです。~
~
環境はWindows7、R3.1.2です。~
~
お手数ですが、どなたかご回答宜しくお願いします。~

//
- legend 関数を,legend(-0.14, 1.15, colnames(iris)[1:4], xpd=TRUE) のようにしてみてください。最初の2つの数値が,legend box の左上隅の座標です。試行錯誤でやるよりは,一度図を描いて,コンソールへ locator(1) とか入力した後,グラフィックウインドウへ移って,一度クリックした後,カーソルが "+" になってから,希望の位置へカーソルを動かしてから,クリックする。コンソールに数値が2つ表示されるでしょう。(要するに,locator 関数を使えば?ということです)&br;xpd=TRUE を忘れないこと。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-11-16 (月) 18:09:07};
- 目的の処理ができました。ありがとうございました。locator()ではなく legend(par("usr")[1],par("usr")[4] ・・・)としてもよさそうですね。 -- [[かがみ]] &new{2015-11-16 (月) 19:22:41};

#comment

**RHmm [#c66232bc]
>[[さくら]] (2015-11-14 (土) 15:23:35)~
~
RHmm という隠れマルコフ解析用パッケージをダウンロードしたいのですが~
見つかりません。~
どこにあるか教えてもらえないでしょうか。~

//
- 検索さえしなかったのですか。http://qiita.com/ru_pe129/items/1e3bed84cbda4ae603fc でもみれば? -- [[河童の屁は,河童の屁は,河童にあらず,屁である。]] &new{2015-11-14 (土) 16:28:52};
- 河童さんありがとうございます.ダウンロードまでできました.次のような指示がありましたがうまくインストールできません。「Rを開いて、 install.packages("ダウンロードしたtar.gzファイルのパス", repos = NULL, type = "source") これでRHmmを使えます。」しかし,"ダウンロードしたtar.gzファイルのパス"のところに入れる語句がわかりません.よろしくお願いします。 -- [[さくら]] &new{2015-11-14 (土) 17:06:49};
- 文字通りのことですが。~
"ダウンロードしたtar.gzファイル" のある場所ということです。それがわからないなら,使うのはあきらめましょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-11-14 (土) 21:10:21};

#comment

**nomogram [#s5f3e6f0]
>[[TTT]] (2015-11-04 (水) 22:05:07)~
~
非常に初歩的で申し訳ありません。~
とある疾患について、Nomogramを作成したいのですが(論文でよくRがひっかっかてきます。)、EZ-Rでどのように操作すれば良いのかわかりません。(あくまで操作の問題です・・・)~
~
何か参考に出来る書籍等ご存知の方はいらっしゃいませんでしょうか?~

//
- EZ-R で一発でできないものは,初歩的なものではないでしょう。あきらめた方がしあわせかも。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-11-04 (水) 22:37:25};
- やはり,EZ-R では一発で出来ないようで,どなたからもお返事がないようなので,プログラムを書いてみました。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-11-06 (金) 15:46:49};
 # ロジスティック回帰分析の結果からノモグラム作成
 nomogram <- function(name, b, value, b0, factor = 10) {
     scale <- function(title, y.pos, min.x, max.x, label) {
         scale0 <- function(min.x, max.x, tick, delta, label) {
             x.pos <- seq(min.x, max.x, by = tick)
             if (is.null(label)) label = x.pos
             segments(x.pos, y.pos, x.pos, y.pos + delta * h, xpd = TRUE)
             if (tick == 10) {
                 text(x.pos, y.pos + 0.5 * h, label, pos = 3, xpd = TRUE)
             }
         }
         text(0, y.pos + 0.5, title)
         segments(min.x, y.pos, max.x, y.pos, xpd = TRUE)
         scale0(min.x, max.x, 1, 0.5, NULL)
         scale0(min.x, max.x, 5, 0.8, NULL)
         scale0(min.x, max.x, 10, 1, label)
     }
 
     b <- factor * b
     b0 <- factor * b0
     m <- length(name)
     d <- expand.grid(lapply(value, as.integer))
     point <- t(t(d) * b)
     r <- pretty(apply(point, 2, range))
     min.x <- min(r)
     max.x <- max(r)
     plot(c(min.x, max.x + 10), range(0:(m + 4)), type = "n", bty = "n",
          xaxt = "n", yaxt = "n", xlab = "", ylab = "")
     h <- strheight("H")
 
     m3 <- 0.5 * m + 3
     text(0, m3 + 0.5, "リスク")
     lp <- (c(min.x, max.x) + b0)/factor
     P <- pretty(1/(1 + exp(-lp)))
     p <- c(0.01, 0.05, seq(0.1, 0.9, by = 0.1), 0.95, 0.99)
     lp <- -log((1 - p)/p)
     pos.x <- lp * factor - b0
     segments(min(pos.x), m3, max(pos.x), m3, xpd = TRUE)
     segments(pos.x, m3, pos.x, m3 + h, xpd = TRUE)
     text(pos.x, m3 + 0.5 * h, p, pos = 3, xpd = TRUE)
 
     lp <- pretty((c(min.x, max.x) + b0)/factor)
     lp <- seq(min(lp), max(lp), by = 1)
     min.pt <- factor * min(lp) - b0
     max.pt <- factor * max(lp) - b0
     scale("リニア・プレディクタ", 0.5 * m + 2, min.pt, max.pt, lp)
 
     scale("ポイント", 0.5 * m + 1, min.x, max.x, NULL)
 
     for (i in 1:m) {
         v <- value[[i]]
         l <- length(v)
         if (l > 5) {
             v <- pretty(v)
             l <- length(v)
         }
         col <- (b[i] < 0) + 1
         x <- v * b[i]
         pos.y <- i * 0.5
         segments(x[1], pos.y, x[l], pos.y, col = col)
         segments(x, pos.y, x, pos.y + h, col = col)
         text(x, pos.y + 0.5 * h, v, pos = 3, col = col)
         text(x[1], pos.y, name[i], pos = ifelse(col == 1, 2, 4))
     }
     r <- range(lp)
 }
 # 使用例(グラフィックウインドウの大きさを調整して何回か描画してください)
 lp <- nomogram(name = c("属性変数", "属性変数2", "連続変数"), # 変数名
        b = c(2.21, 1.34, -0.18), # 係数
        value = list(c(0, 1, 2, 3), c(0, 1), 10:30), # 変数の取る値
        b0 = -1.53) # 定数項
&ref(nomogram.png);
- ご丁寧にありがとうございます。一度やってみます。 -- [[TTT]] &new{2015-11-10 (火) 09:34:49};

#comment

**行列の操作(0/1の反転、値の置換) [#k12ee237]
>[[通りすがり]] (2015-10-30 (金) 15:51:34)~
~
行列の操作について質問です。~
~
(質問1)~
0または1を要素として持つM×N行列に対し~
全ての要素を反転する(0を1、1を0に変換する)方法はありますでしょうか?~
~
(質問2)~
実数値を要素として持つM×N行列に対し~
指定した列の値を指定した値(例えば0に置き換え)に~
全て置換する方法はありますでしょうか?~

//
- ぶさいくなコードですが、目的は達せられますよ。 -- [[markovchainmontecarlo]] &new{2015-10-30 (金) 17:27:19};~
>(質問1)~
 > set.seed(0)
 > (mat <- matrix(sample(0:1, 20, TRUE), 4, 5))
      [,1] [,2] [,3] [,4] [,5]
 [1,]    1    1    1    0    0
 [2,]    0    0    1    1    1
 [3,]    0    1    0    0    1
 [4,]    1    1    0    1    0
 > apply(mat, c(1, 2), function(x) ifelse(x==0, 1, 0))
      [,1] [,2] [,3] [,4] [,5]
 [1,]    0    0    0    1    1
 [2,]    1    1    0    0    0
 [3,]    1    0    1    1    0
 [4,]    0    0    1    0    1
>(質問2)~
 > mat[,3] <- 99
 > mat
      [,1] [,2] [,3] [,4] [,5]
 [1,]    1    1   99    0    0
 [2,]    0    0   99    1    1
 [3,]    0    1   99    0    1
 [4,]    1    1   99    1    0
- (質問1)は, x <- 1-mat だけでできる。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-10-30 (金) 17:56:55};
- おおー。 -- [[markovchainmontecarlo]] &new{2015-10-31 (土) 00:56:01};~
さすが、河童の屁は,河童にあらず,屁である。さんですね。非常にスマート。~

#comment

**複数の列に対するソート [#ca98f130]
>[[霜]] (2015-10-21 (水) 14:48:54)~
~
お世話になります。~
~
以下のようなデータフレームxに対して、まずcat列で昇順にソートし、次にname列で降順にソートしたいのですが、どのようにすればよいでしょうか。cat列には"A","B"の2値しかなく、Name列には一意の文字列が格納されています。~
~
 cat <- c("A","B","B","A","A")
 name <- c("aaa","ddd","bbb","ccc","eee")
 weight <- c(51,55,72,57,64)
 x <- data.frame(CAT=cat, Name=name, WEIGHT=weight)
~
お手数ですが、ご回答宜しくお願いします。~

//
- 関数 order() と関数 pmax() を組み合わせてはいかがでしょう。ただ、関数 pmax() に因子ベクトルを指定すると不具合が生じるため、データ・フレーム作成時に stringsAsFactors=F をつけております。 -- [[とおりすがり]] &new{2015-10-21 (水) 15:19:04};
~
 > cat <- c("A","B","B","A","A")
 > name <- c("aaa","ddd","bbb","ccc","eee")
 > weight <- c(51,55,72,57,64)
 > x <- data.frame(CAT=cat, Name=name, WEIGHT=weight, stringsAsFactors=F)
 > 
 > sortlist <- order(x$CAT, pmax(x$CAT, x$Name)) 
 > x[sortlist,]
   CAT Name WEIGHT
 1   A  aaa     51
 4   A  ccc     57
 5   A  eee     64
 3   B  bbb     72
 2   B  ddd     55
~
- ありがとうございます。しかしその方法ではName列が降順になっていないため、目的を達成できていません。 -- [[霜]] &new{2015-10-21 (水) 15:27:08};
- 汎用のプログラムでなくてよいのでしょう?cat が A, B の二種類しかないなど,かなり条件のきついデータフレームなので,そこを利用してプログラムを書けばよいと思います。cat によりデータフレームを二分し,各データフレームの Name で逆順にソートして,二つのデータフレームを rbind すればできあがり。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-10-21 (水) 17:05:56};
 > z <- lapply(split(x, x$CAT), function(y) {o <- order(y$Name, decreasing=TRUE); y[o,]})
 > a <- rbind(z[[1]], z[[2]])
 > a
   CAT Name WEIGHT
 5   A  eee     64
 4   A  ccc     57
 1   A  aaa     51
 2   B  ddd     55
 3   B  bbb     72
cat が複数種あるような場合でも,rbind を以下のようにすれば無問題。
 > z <- lapply(split(x, x$CAT), function(y) {o <- order(y$Name, decreasing=TRUE); y[o,]})
 > a <- z[[1]]
 > for (i in 2:length(z)) a <- rbind(a, z[[i]])
 > a
   CAT Name WEIGHT
 5   A  eee     64
 4   A  ccc     57
 1   A  aaa     51
 2   B  ddd     55
 3   B  bbb     72
あるいは,Name の逆順キーを作って,ソートする。これもトリッキー。
 > key <- -as.integer(factor(x$Name))
 > o <- order(x$CAT, key)
 > x[o,]
   CAT Name WEIGHT
 5   A  eee     64
 4   A  ccc     57
 1   A  aaa     51
 2   B  ddd     55
 3   B  bbb     72
いずれにしても,あれこれうまい方法を探すより,ダサくってもサクっと動くプログラムを作る方が速い。
- ありがとうございました。order()やpmax()の引数でどうにかしようと思っていましたが、ご提示いただいた方法で十分ですね。 -- [[霜]] &new{2015-10-21 (水) 20:08:56};
- 昨日は失礼致しました。では、dplyr パッケージの arrange(x, CAT, desc(Name)) でいかがでしょう。 -- [[とおりすがり]] &new{2015-10-22 (木) 14:32:18};

#comment

**印刷の方向 [#p64b3745]
>[[cloud]] (2015-10-16 (金) 14:00:41)~
~
いつもお世話になっています。~
A4の用紙方向を下の様な感じで切り分けて印刷したいと考えています。~
このコマンドではプリンタのデバイスの縦横設定を手動で事前に切り替えないと、うまく動作しません。~
印刷方向をうまく切り換える方法をご存じないでしょうか。
 if (yokogaki == FALSE) {
	win.print(width=8, height=11, restoreConsole = FALSE, printer = "プリンタ名" )	# 縦書印刷
	par(mar = c(16, 7, 4, 4))
 } else {
	win.print(width=11, height=8, restoreConsole = FALSE, printer = "プリンタ名" )	# 横書印刷
	par(mar = c(5, 4, 5, 12))
 }

//
- プリンタードライバの設定でなんとかならないでしょうか。環境について情報ゼロなので超能力を使ってもこの程度の回答しかできないと思います。 -- [[通りすがり]] &new{2015-10-18 (日) 07:38:11};
- 失礼しました。使用環境は複数のwindows8のパソコン。各々別のプリンタ"RICOH imagio MP C4000 RPCS"等が接続されています。~
プリンタードライバを手動で変更すればこのコマンドでも可能です。~
複数の人員が使うので容易に印刷できるようにドライバ設定の変更をプログラム内で選択する方法を知りたいです。 -- [[cloud]] &new{2015-10-18 (日) 11:51:59};
- そもそもWindowsは「手動操作」が前提なので、操作が面倒なのはWindowsユーザの宿命でしょう。CLIで印刷できるMacOSXやLinuxならpostscript()の引数fileをパイプにして、landscapeオプションをつけてデータを送ると横向き印刷になります。 --  &new{2015-10-18 (日) 15:25:50};
- 「プリンタードライバを手動で変更すれば」よいだけの話でしょう。 -- [[ ]] &new{2015-10-18 (日) 20:46:45};
- Windowsユーザじゃないので外しているかもしれませんが、もしかすると、1台のプリンタで複数の設定(プリンタ名)を設定できませんか。縦向きをデフォルトとしたものと横向きをデフォルトとしたものを別々に作成できれば、プリンタ設定名の書き分けで解決するかも。 --  &new{2015-10-19 (月) 00:01:15};
- 情報ありがとうございます。CRANが何かないかと思ったのですがRからプリンタドライバの設定は変更できないようですね。~
1台のプリンタに複数のプリンタ名を設定すれば可能なのですが、複数のパソコンを設定するのは面倒なので、コマンドプロンプトかVBAでドライバの設定を書き換える方法を検討します。 -- [[cloud]] &new{2015-10-24 (土) 12:22:14};

#comment

**シングルクォートとダブルクォートの違い [#aaa57a86]
>[[markovchainmontecarlo]] (2015-10-14 (水) 23:07:26)~
~
いつもお世話になっております。~
ふと思ったのですが、Rにおいてシングルクォート(’)とダブルクォート(”)の違いはありますでしょうか。~
~
以下のコードと結果から違いはないと思われますが、確かな文献などが見つかりません。~
ご存知の方がいらっしゃいましたら、教えた頂けたら幸いです。~
 > hoge <- 3
 > print(hoge)
 [1] 3
 > print("hoge")
 [1] "hoge"
 > print('hoge')
 [1] "hoge"
よろしくお願いいたします。~

//
- コンソールに help('"') または ? Quotes と入力すれば,詳しい説明が得られます。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-10-15 (木) 06:33:44};
- 「 河童の屁は,河童にあらず,屁である。」さま~
ご回答ありがとうございます。~
ヘルプを見ると、基本的に同じようですね。(ダブルクォートが好ましいと書いてありますが。)~
~
あと今回新たに試してみました。~
 > print("hoge")
 [1] "hoge"
 > print('hoge')
 [1] "hoge"
 > print("'hoge'")
 [1] "'hoge'"
 > print('"hoge"')
 [1] "\"hoge\""
何が入れ子になっているかで少し違うみたいですね。~
本件は解決とさせていただきます。ありがとうございました。 -- [[markovchainmontecarlo]] &new{2015-10-15 (木) 18:53:03};~

#comment

**データフレーム名を変数として処理したい [#a098bf32]
>[[中阪 隆]] (2015-10-14 (水) 18:13:40)~
~
データフレームを、固定の名前ではなく、変数名で取り扱うには、どうしたら良いでしょうか?~
現在は、対象のデータフレームを操作するSQl文字列を生成して、sqldfで実行していますが、これ以外の方法も探していますが、見つけられていません。~
~
よろしくお願いします。~

//
- 言っていることがよくわからない。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-10-16 (金) 21:20:12};
- プログラミングしてるとこういうことやりたくなりますよね。コマンド1行丸ごと文字列で作ってevalで実行しています。txt<-paste("hist(",DFname,"$","age",")",sep="") : eval(parse(text=txt)) -- [[よくわかる。]] &new{2016-05-20 (金) 00:34:58};

#comment

**無題 [#fbc43c64]
>[[あき]] (2015-10-12 (月) 16:05:10)~
~
最近になって、Rのパッケージをインストールして、何度か使用した後に、Rを終了すると、次回Rを起動させると、パッケージがインストールされていない状態に戻ってしまいます。前までは、Rを終了させてもパッケージは保存状態にありました。なぜこのようなことが起こるのでしょうか。~

//
- 題名は「無題」なのですか?~
答える方が回答しやすいように質問するのもマナーの一つだと思いますよ。~
~
ま、それはさておき、libraryでパッケージを呼び出していないだけですか?~
それとも~
 library()
で調べても、「パッケージ自体が」見つからない状態ですか? -- [[markovchainmontecarlo]] &new{2015-10-12 (月) 17:30:43};
- library()を打ち込むと表示はされていますが、いざlibrary()で使おうとすると、インストールしなおさないといけない状態です。 -- [[あき]] &new{2015-10-15 (木) 08:53:50};

-  [[投稿における注意事項]] は読まれましたか?-- [[markovchainmontecarlo]] &new{2015-10-15 (木) 18:58:38};~
~回答者は神通力を持ってはいません。COLOR(magenta){「これこれしたが、うまく動きません」といった質問}には、あなたの試みたことを回答者が再現できるような、データ、コード、エラー出力(そして、R のバージョン、使用 OS、使用非標準パッケージ名)を添えることをお勧めします。あまりに長くなる場合は適宜編集して下さい。~

#comment

**データ加工(NA、99999の置換) [#fd798755]
> (2015-09-29 (火) 12:42:24)~
~
あるデータフレーム(1つの目的変数と200の説明変数)があり~
・目的変数は0/1のみ~
・説明変数は全て数値型でNAや外れ値の意味をもつ99999が含まれている~
各説明変数について、NA、99999を該当するレコードの目的変数の平均値に置き換えたいのですが~
どのようにやるとスマートでしょうか?~

//
- 別にスマートにやらなくてもよいと思いますが。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-09-29 (火) 13:07:18};
 > # テストデータ生成
 > set.seed(12345)
 > n <- 10
 > d <- data.frame(y=sample(0:1, n, replace=TRUE),
 +                 x1=sample(50, n, replace=TRUE),
 +                 x2=sample(250, n, replace=TRUE))
 > d[sample(n, 5), 2] <- NA
 > d[sample(n, 5), 3] <- NA
 > d[sample(n, 5), 2] <- 99999
 > d[sample(n, 5), 3] <- 99999
 > d
    y    x1    x2
 1  1    NA 99999
 2  1 99999    82
 3  1    NA   242
 4  1 99999 99999
 5  0    NA    NA
 6  0 99999    98
 7  0    20   175
 8  1 99999 99999
 9  1     9 99999
 10 1 99999 99999
 
 >  # 例解
 > d[,-1] <- sapply(d[,-1], function(z) {
 +                  z[z == 99999] <- NA
 +                  z[is.na(z)] <- mean(z, na.rm=TRUE)
 +                  z})
 > d
    y   x1     x2
 1  1 14.5 149.25
 2  1 14.5  82.00
 3  1 14.5 242.00
 4  1 14.5 149.25
 5  0 14.5 149.25
 6  0 14.5  98.00
 7  0 20.0 175.00
 8  1 14.5 149.25
 9  1  9.0 149.25
 10 1 14.5 149.25
- 助言ありがとうございます。R初心者なのですが、全変数に対して何らかの処理を行う場合、どのように変数一覧を取得して処理をすればよいのか悩んでいました。apply系は書籍で勉強したことあるのですが利用するまでの発想にいたりませんでした。ありがとうございました。 --  &new{2015-10-01 (木) 12:44:56};
- 目的変数の平均値に置き換えられてないよ --  &new{2015-10-02 (金) 08:37:04};
- 「目的変数は0/1のみ」って書いてあったし,目的変数の平均値に置き換えるってへんじゃないか?書き間違いじゃないか? --  &new{2015-10-02 (金) 08:48:55};
- 「説明変数の平均値」だと自然ですよね。プログラムでもそうなっていますし。 --  &new{2015-10-03 (土) 18:05:08};

#comment

**t値がとても大きい時のp値 [#d80dbbd8]
>[[windsor]] (2015-09-26 (土) 22:06:10)~
~
t検定でt値がとても大きい場合、p値をpt関数で計算すると、p=0となってしまいますが、これをp=1.0E-200というような値で(その数値が統計学的に意味のある値かどうかは別として)表示することはできませんでしょうか?例えば、t値が52、自由度が4700で、以下のようなコマンドを用いた場合です。
 pt(52,4700,lower.tail=FALSE)*2
どうぞよろしくお願いいたします。~

//
- 「t値が52、自由度が4700」ならば,計算値は 0 ですね。内部表示を 16 進で示すと,~
 > sprintf("%a", pt(52,4700,lower.tail=FALSE)*2)
 [1] "0x0p+0"
となり,コンピュータ上では「完全に 0」です。
t 値が 41 以下ならば,極めて0に近い値。内部表示も 0 ではありません。
 > sprintf("%a", pt(41,4700,lower.tail=FALSE)*2)
 [1] "0x1.ddc34cd8p-1043"
10 進表示をしたいなら %g を指定して
 > sprintf("%g", pt(41,4700,lower.tail=FALSE)*2)
 [1] "1.9801e-314"
 > cat(sprintf("%g", pt(41,4700,lower.tail=FALSE)*2))
 1.9801e-314
なお,計算される P 値は,「近似値」なので,こんなに小さい値の精度なんて想像するのも無駄。
いずれにせよ,あまり意味のあることではないですね。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-09-27 (日) 10:43:08};
- どうもありがとうございました。 -- [[windsor]] &new{2015-09-27 (日) 19:11:26};

#comment

**xに勝手に数値が格納されています。どうすれば削除できますか。 [#wfd38453]
>[[初学者]] (2015-09-26 (土) 20:26:23)~
~
Rについての質問です。xに数字を格納した覚えがないのに、xに数値が格納されている状態になります。Rを再起動、再インストールしてもxに数値が代入されたままになってしまいました。このような状態を直すためにはどのようにすればよいでしょうか。以下のように命令をうつと、エラーメッセージが表示されます。attach関数を使って、filenameのxをfilename$xの前半部分を省きたいのですが、以下のエラーメッセージがでます。
 dat <- read.csv("filename.csv",header=TRUE)
 attach(dat)
 以下のオブジェクトは .GlobalEnv? によってマスクされています: 
 x 
よろしくお願いします。~

//
- rm(x) とすればよいでしょう。&br;そもそもは,以前の R セッションの終了時に,(意識したかしないかはともかく),「ワークスペースを保存する」を選択したからでしょう。特に意図しない場合には,「ワークスペースを保存しない」で終了するようにすればこのようなことは生じないので,無難でしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-09-26 (土) 21:45:26};
- rm(x)で解決できました。ありがとうございます。 -- [[初学者]] &new{2015-09-26 (土) 21:53:38};

#comment

**並列計算のページについて [#z37bb93e]
>[[markovchainmontecarlo]] (2015-09-25 (金) 20:31:43)~
~
Wikiに「並列計算について」の記載が乏しいと思いましたので、ページを新たに立ち上げようかと思っていますが、このような行為をしてもいいのでしょうか。~
[[Rで並列計算]]のページは存じておりますが、もう少し簡単に扱える「snowfall」パッケージの紹介などをしようと思っています。~
皆様のご意見を伺いたく思います。~

//
- やればよいと思います。それが Wiki というものでしょう。 -- [[ ]] &new{2015-09-25 (金) 21:24:25};

#comment

**CRANの数について [#p6792780]
>[[markovchainmontecarlo]] (2015-09-18 (金) 13:52:11)~
~
CRANの数について質問があるので、ご存知の方がいらっしゃいましたら回答いただけると幸いです。~
~
R3.0.2では非常に多くのCRANミラーサイトがあり、[JAPAN]では[TOKYO]と[YAMAGATA]がありました。~
しかしR3.2.2では20程度しかなく、[JAPAN]はありませんでした。~
~
今後ミラーサイトは(登録が済んでいないなどの理由から)順次追加されるとの認識でいいのでしょうか。~
~
よろしくお願いいたします。~

//
- R-3.2.2からHTTPS接続によるミラーサイトが優先して表示される仕様となったようです。WindowsのR GUIの場合、(HTTP mirrors) を選択することで従来の(HTTP接続の)ミラー一覧が利用できます。 -- [[鈴木@ef-prime]] &new{2015-09-18 (金) 15:59:49};
- ご回答ありがとうございます。~
ご指摘の通り、「(HTTP mirrors) を選択」すると、従来のミラーが選択できました。~
~
改めての質問なのですが、[HTTPS]を積極的に選択する必要はありますか?(パッケージのダウンロードですので、あまりセキュリティーは気にしなくてもいいような気もします。)~
あと、あくまで「ミラー」ですので、どのCRANでも同じ内容でしょうか。~
同じであれば通信速度の出る[TOKYO]から選びたいと思っています。
~
ご存知の方がいらっしゃいましたら、引き続きよろしくお願いいたします。-- [[markovchainmontecarlo]] &new{2015-09-18 (金) 17:00:19};
- もともと基本的にRの配布システムは安全ではありませんでした. 現在はcranのマスターからcran.ism.ac.jpへのミラーにはssh経由のrsyncを用いるように先月初旬に変更しました. 一方でSSL(https)は現在証明書発行の*事務手続き*に何故か時間がかかっております...しばらくお待ちを. もちろんSSL経由での入手が推奨されます. -- [[cran.ism.ac.jp関係者]] &new{2015-09-18 (金) 19:43:30};
- ご回答ありがとうございます。推奨されているようにSSL経由でのインストールをしたいと思います。 -- [[markovchainmontecarlo]] &new{2015-09-18 (金) 23:18:51};
- R3.2.2からWindowsでproxy接続(特に認証要の場合)では、setInternet2(FALSE)としないと接続ではじかれる場合があります。リリース時のアナウンス通りですが、見逃している方のために。 -- [[tanaka]] &new{2015-09-21 (月) 21:24:54};

#comment

**formulaの説明変数の指定について [#qf034277]
>[[CRA]] (2015-09-14 (月) 11:02:07)~
~
~
回帰分析において 目的変数~説明変数 の形式でlm()を実行したいのですが、dataの列名に"-"が含まれているとエラーになるようです。
 #正常に実行できる
 x <- trees
 lm(Volume ~ Girth, data = x)
 
 #列名を変更
 colnames(x)[1] <- "A-3"
 lm(Volume ~ A-3, data = x)
このような列名を含むdataではどのように説明変数を指定すればよいのでしょうか。~
~
宜しくお願いします。~

//
- 苦もないこと。そのような列名を colnames で付け替えるとよいでしょう。そもそも,列名の命名規則に制限があるのですから,それにわざわざあらがう必要はないでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-09-14 (月) 11:09:32};
- lm(Volume ~ `A-3`, data = x)とするとうまくいきました。列名を変更したくない場合はこっちでもよいかなと思いました。 -- [[CRA]] &new{2015-09-14 (月) 12:45:00};

#comment

**heatmapのラベル名の色について [#b3cbd5f2]
>[[ヒート]] (2015-09-11 (金) 09:27:49)~
~
お世話になります。~
~
heatmap()で水平方向のラベルを特定の条件で色分けしたいと考えています。
 x <- as.matrix(mtcars)
 heatmap(t(x))
この場合、"Mazda"を含むラベルを赤、"Merc"を含むラベルを青にするにはどのようにすればよいでしょうか。~
おそらくheatmap()の戻り値を使えばよいのだとは思うのですが、やり方がわかりませんでした。~
~
環境はWin 7, R 3.0.2です。~
~
どなたかご教示宜しくお願いします。~

//

#comment

**spatstatパッケージのKest、pcf関数の結果の違いについて [#k9043aa1]
>[[B4]] (2015-09-05 (土) 07:45:52)~
~
点パターンの凝集性を評価する際に、rがどのくらいの値でランダムな分布になるかを数値化したいと考えております。spatstatパッケージのKest関数、Lest関数を用いて、観察対象の点パターンを計算した結果と、完全にランダムな分布(CSR)から得られるプロファイルが交わる際のrの値が、pcf関数でCSRと比較した際に得られるrの値と倍くらい違うのですが、どういうことでしょうか?よろしくお願いいたします。~

//

#comment

**多重比較おける効果量・検出力について [#b125c055]
>[[R2]] (2015-09-01 (火) 10:29:46)~
~
お世話になります。~
~
従来は多重比較によってp-valueを求めて有意である、有意でないという考察で終えていたのですが、"compute.es"や"pwr"ライブラリーを用いて効果量や検出力の解析をしたいと考えました。~
~
しかし、ヘルプファイルを見てみましたがいずれのライブラリーもTukeyやDunnetのような多重比較によって得られた統計値を使用することを想定していないようでした。~
~
多重比較における効果量・検出力を算出する方法について知見をお持ちであればご教示頂けませんでしょうか。Rでそのようなライブラリーがないというのであれば、参考書や論文の情報でも構いません。~
~
宜しくお願いします。~

//
- DunnettTestsはチェック済みですか? --  &new{2015-09-01 (火) 13:36:58};
- 情報ありがとうございます。説明書を読みましたが効果量を求める機能が含まれていないようでした。効果量は多重比較とは縁のないものなのでしょうか。 -- [[R2]] &new{2015-09-01 (火) 14:04:23};

#comment

**ggplotで時系列を並べる [#ebe7dedf]
>[[つなかん]] (2015-09-01 (火) 08:51:32)~
~
お世話になります。ggplotってこんな図が苦手な気がします。facetとか使うと描けそうですけど、どうも見栄えがよくない。あえてggplot使うならどう描きますか?
 timeval = seq(as.POSIXct("2014-07-17 10:00:00"), by="30 sec", length=10)
 y1  = rnorm(10)
 y2 = rnorm(10)^10
 y3 = rnorm(10)
 y4 = rnorm(10)
 
 par(mfrow=c(3,1))
 par(mar=c(0,4,0,4))
 par(oma=c(4,0,4,0))
 plot(y1~timeval, type="l",ylab="y1(mm)", axes=F)
 axis(2); box()
 plot(y2~timeval, type="l", ylab="y2(g)", axes=F)
 axis(2); box()
 plot(y3~timeval, type="l", ylab="y3")
 lines(y4~timeval, type="l", col="red")
 legend("bottomright", legend = c("y3", "y4"), col=c("black", "red"), lty=1)
 mtext("Timeval", side=1, line=3, cex=0.8)

//

#comment

**forecastパッケージのstl関数のエラーについて [#r4ab0d86]
>[[kirioh]] (2015-08-28 (金) 22:32:50)~
~
はじめまして、お世話になります。~
~
forecastパッケージを使った時系列データの分離(トレンド・季節変動・誤差成分)に失敗し続けています。~
具体的にはA列に日付、B列に数値の入った以下のようなCSV形式の時系列データを用いて、~
~
Date       SP~
~
2015/1/1  14360~
~
2015/1/2  19908~
~
2015/1/3  16210~
~
2015/1/4  15465~
~
2015/1/5  12514~
~
2015/1/6  12182~
※以下2015/7/31まで~
以下のコードを試みたのですが、
 data = read.csv('test.csv',head=T, row.names=1)
 ts <- ts(data, start = c(2015,1), end = c(2015,7), frequency=365)
 stl <- stl(ts, s.window="per")
 stl(ts, s.window = "per") でエラー:  一変量系列だけが許されます
というエラーが発生する状況です。またdecomposeを使っても
 時系列の期間が無いか、2未満です
というエラーが発生します。
国内外のサイトで調べてdataをnumericで渡したり$indexを通したりと色々試したのですが、全く解決せず、恐れ入りますがこの条件から考えられる原因及び解決法をご教示くださいますでしょうか?~
tsのclassは"ts"となっており、auto.arimaやacfは出力されはします。~
ただtsをプロットすると2015.000からはじまったり、acfはlag軸の目盛りが0.00からはじまったり、不完全な状態です。~
バージョンは3.1.2、OSはwindows 7になります。
何卒宜しくお願い致します。

//
- 投稿時の,問題でしょうが,データが1行おきなの?元のデータは違うというなら,投稿法を改める(正しく)すべし。&br;本当にデータに問題が無いのかどうかを確かめたり,ほかの人がやってみる場合のことを考えれば,ここにそのデータをアップロードすべき。要するに,あなたがやったこと(エラー)を再現してみないことには,アドバイスもできないだろうということ。&br;ちなみに,read.csv で読み込んだ後 data にデータが読み込めたか確認しましたか?(データがスペースで区切られているように見えるので,あなたの指定では正しく読み込めていないのではないかと思いますけど。head(data) してみなさい。)&br;つぎに,ts の start, end の指定法はこれでいいの?example(ts) の最初の例だと start = c(1959, 2) は 2nd Quarter of 1959 の意味だよって書いてある風にみえるんだけど。start = c(2015,1), end = c(2015,7) では,最初の 7 個のデータしか使われないんじゃない? -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-08-29 (土) 08:06:27};
- ご指摘ありがとうごさいます、また客観が欠けておりすみません。&br;元データも1行おきではなく、正しくは以下になります。
 Date	SP
 2015/1/1	14360
 2015/1/2	19908
 2015/1/3	16210
 2015/1/4	15465
 2015/1/5	12514
 2015/1/6	12182
 2015/1/7	11966
またhead(data) すると以下になっています。
 > head(data)
             SP
 2015/1/1 14360
 2015/1/2 19908
 2015/1/3 16210
 2015/1/4 15465
 2015/1/5 12514
 2015/1/6 12182
start, endの指定についても私の誤認(YYYY,MM,DDだと思ってました)でした、ありがとうございます。 -- [[kirioh]] &new{2015-08-29 (土) 15:06:10};

#comment

**十数万件データ同士のマージ [#zc50d703]
> (2015-08-25 (火) 22:10:05)~
~
お世話になっております。~
2つのデータフレーム(共に十数万件で項目数100前後)のマージをmergeで試してみましたが、数分経っても結果は返ってきませんでした。~
高速にマージしてくれるお薦めのライブラリがあれば教えてください。~

//
- マシン性能にもよるのでは。例えば、こちらの環境では、10万行のデータフレームをmerge()しても、1秒もかからない。 --  &new{2015-08-26 (水) 11:09:07};
 a <- data.frame(id = 1:100000, as.data.frame(matrix(1:10000000, ncol = 100)))
 b <- data.frame(id = sample(1:100000, size = 100000),
                 as.data.frame(matrix(1:10000000, ncol = 100)))
というデータフレームが2つあったとして、
 > head(a$id); head(b$id)
 [1] 1 2 3 4 5 6
 [1] 24019 90410 60377 38469 66968  3732
このidでmerge()してみると、
 > system.time(ab <- merge(a, b, by = "id"))
    ユーザ   システム       経過  
      0.644      0.016      0.660 
この通り。なお、
 > system("cat /proc/cpuinfo | grep 'model name' |uniq")
 model name	: Intel(R) Xeon(R) CPU           W3550  @ 3.07GHz
- 私もやってみました。やはり1秒もかからないですね。&br;使い方が間違っているのか,よほど特殊なデータ構造なのか。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-08-26 (水) 15:51:26};
 > system.time(ab <- merge(a, b, by = "id"))
    ユーザ   システム       経過  
      0.869      0.127      0.992 
  機種名:	Mac Pro
  機種 ID:	MacPro5,1
  プロセッサ名:	Quad-Core Intel Xeon
  プロセッサ速度:	2.8 GHz
  プロセッサの個数:	1
  コアの総数:	4
  二次キャッシュ(コア単位):	256 KB
  三次キャッシュ:	8 MB
  メモリ:	12 GB
  プロセッサ相互接続速度:	4.8 GT/s
- 返信遅くなり申し訳ありません。 サンプルでいただいたコードは確かに私のPCでも1秒前後で処理が終了しました。 しかし私の処理したい以下のコード(変数名はダミー)ですと処理が数分経過しても終わりません。 ご指摘・助言お願いします。。。 --  &new{2015-08-27 (木) 13:48:03};
 df <- data.frame(id = I(sample(100001:200000,size=100000)), target=rep(c(0,1)))
 d1 <- subset(df,target==1)
 d0 <- subset(df,target==0)
 nm <- "id"
 w <- tapply(df$target,df[,c(nm)],mean)
 y <- tapply(d1$target,d1[,c(nm)],length)
 z <- tapply(d0$target,d0[,c(nm)],length)
 a  <- data.frame(nm=I(names(w)),mn=w)
 b  <- data.frame(nm=I(names(y)),c1=y)
 c  <- data.frame(nm=I(names(z)),c0=z)
 d <- merge(a,b,by.x="nm",by.y="nm",all=T)
 e <- merge(d,c,by.x="nm",by.y="nm",all=T)
- AsIsクラスだと時間がかかるのでは? --  &new{2015-08-27 (木) 14:23:28};~
整数型の場合
 > ai <- a; ai$nm <- as.integer(ai$nm)
 > bi <- b; bi$nm <- as.integer(bi$nm)
 > ci <- c; ci$nm <- as.integer(ci$nm)
 > system.time(di <- merge(ai, bi, by = "nm", all = TRUE))
    ユーザ   システム       経過  
      0.345      0.000      0.345 
 > system.time(ei <- merge(di, ci, by = "nm", all = TRUE))
    ユーザ   システム       経過  
      0.322      0.008      0.330 
文字列型の場合
 > ac <- a; ac$nm <- as.character(ac$nm)
 > bc <- b; bc$nm <- as.character(bc$nm)
 > cc <- c; cc$nm <- as.character(cc$nm)
 > system.time(dc <- merge(ac, bc, by = "nm", all = TRUE))
    ユーザ   システム       経過  
      0.864      0.000      0.864 
 > system.time(ec <- merge(dc, cc, by = "nm", all = TRUE))
    ユーザ   システム       経過  
      0.872      0.000      0.871 
文字列がキーだとちょっと時間がかかるね。しかし、いずれにしても1秒もかかりません。
- マージキーが AsIs の場合に merge のボトルネックは,do.call("order", a[,1, drop=FALSE]) ですね。特にマージキーを AsIs にする必要もなければ(必要ないと思いますが),換えた方がよいでしょう。  
 > system.time(do.call("order", a[,1, drop=FALSE])) 
    ユーザ   システム       経過  
     76.086      0.520     82.530 
 > ai <- a; ai$nm <- as.integer(a$nm) 
 > system.time(do.call("order", ai[,1, drop=FALSE]))
    ユーザ   システム       経過  
      0.011      0.001      0.029 
 > ac <- a; ac$nm <- as.character(a$nm) 
 > system.time(do.call("order", ac[,1, drop=FALSE]))
    ユーザ   システム       経過  
      0.217      0.001      0.225 
 > af <- a; af$nm <- factor(a$nm) 
 > system.time(do.call("order", af[,1, drop=FALSE]))
    ユーザ   システム       経過  
      0.010      0.000      0.021 
AsIs の場合,とんでもない処理時間がかかっているのが分かります。&br;今回の例は,使い方がまずかった(データ構造が不適切だった)ということですね。-- [[河童の屁は,河童にあらず,屁である。]] &new{2015-08-27 (木) 18:21:13};
- なるほど。ありがとうございます。上記のI()はデータフレームに文字ベクトルを設定する際、ファクター型に自動変換されないようにするための処理として設定していました。実際にはループで上記のnmにdfの各項目を設定し処理させているのですが、どのようにdf$nmのクラスを判断し型変換を行えば良いでしょうか? --  &new{2015-08-28 (金) 02:07:49};
- > ファクター型に自動変換されないようにするため&br;上の方の例に示されているように,as.character すればよいでしょう。また,マージキーが factor の場合であっても,merge 関数の中で
             bx <- x[, by.x]
             if (is.factor(bx)) 
                 bx <- as.character(bx)
のように as.character されるので,問題ないと思いますけど。AsIs が不都合なんですから... -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-08-28 (金) 08:20:48};
- いやいや「ファクター型に自動変換されないようにするため」なら、正攻法は、stringsAsFactorsオプションの値を既定値のTRUEからFALSEに変更するとか、session-wideにするなら、スクリプトの頭や初期ファイル(e.g. ~/.Renviron)にoptions(stringsAsFactors = FALSE)を書いておくとかでしょう。I()なんて使っちゃダメです。--  &new{2015-08-28 (金) 08:35:33};


#comment

** 関数の引数にデータフレームの列名を指定する方法 [#e808c90b]
>[[su?]] (2015-08-23 (日) 13:00:26)~
~
お世話になります。~
~
列a,b,c,,,,を持つデータフレームdfの要素を引数とする関数を作製したいと思います。~
hikisu1にa列、hikisu2にb列、hikisu3にc列を指定する場合
 func<-function(hikisu1, hikisu2, hikisu3){ }
という関数を作製して、使用時に~
 func(df$a, df$b, df$c)
としているのですが、これを、
 func(a, b, c, data=df)
というように、dfの要素を指定できるような関数に作り替えたい思います。~
方法について、ご教示頂けますと幸いです。~
~
(理由はdfの他の要素も修飾することを可能とするためです。)~

//
- わざわざ関数にするメリットがわからないが,例えば以下のような関数
 func <- function(a, b, c, data=df) {
   name.a <- deparse(substitute(a))
   name.b <- deparse(substitute(b))
   name.c <- deparse(substitute(c))
   name.data <- deparse(substitute(data))
   str <- sprintf("data <- data.frame(%s$%s, %s$%s, %s$%s)",
                  name.data, name.a, name.data, name.b, name.data, name.c)
   result <- eval(parse(text=str))
   colnames(data) <- cbind(name.a, name.b, name.c)
   data
 }
を定義すれば,使用例は以下のごとし。
 df <- data.frame(
 a = 101:103,
 b = sample(10, 3),
 c = letters[21:23],
 d = c(1.4, 4.5, 7.9),
 e = c("abc", "foo", "bar")
 )
 df
 ( x <- func(a, b, c, df) )
 ( y <- func(d, e, a) )
あなたの意図に合うのかな??~
でも,そんなことで済むなら,わざわざ関数を定義しなくても,
 ( x <- df[c("a", "b", "c")] )
 ( y <- df[c("d", "e", "a")] )
で,同じ結果を得ることも出来ます。~
わずか数回のキータイプを省略したいというなら別ですが。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-08-23 (日) 19:59:34};
- 関数内で df の要素 a, b, c を使うということか。ならば,例解で示したように作られた data というデータフレームを使えばよいが,呼ばれたときの要素名が付いているので,名前を使ってプログラムすることはできなくなるけど?&br;あなたが現在使っている func で,どういう風にプログラムされているんすかね?やろうとしていることがよくわからん。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-08-24 (月) 14:32:22};

#comment

**データフレームの各項目についてclass()を適用する方法 [#y993d288]
>[[te]] (2015-08-20 (木) 21:59:32)~
~
apply(df[1,1:dim(df)[2]],2,class) だと想定どおりの結果となりません。~
numeric型のものがあるにも関わらず、すべてcharacter型と返ってきます。~
どのように修正すればよいでしょうか。~

//
- なぜ,df[1,1:dim(df)[2]] としないといけないのかわからないが,sapply(df, class) だけでよいでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-08-21 (金) 05:39:50};
 > sapply(iris, class)
 Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
    "numeric"    "numeric"    "numeric"    "numeric"     "factor" 
 > sapply(iris[1,1:dim(iris)[2]], class)
 Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
    "numeric"    "numeric"    "numeric"    "numeric"     "factor" 

#comment

**ヒートマップのカラーチャートについて [#j049864a]
>[[mappa]] (2015-06-30 (火) 15:29:08)~
~
お世話になります。"Heatplus"ライブラリーの"regHeatmap"を用いて行列のデータをヒートマップにします。~
~
以下のように実行するとファイル右側に表示されるカラーチャートの範囲が-2~1になりますが、この範囲を行列中の数値の範囲である1~100に対応させたいと考えました。~
&ref(file_1.pdf);~
 source("http://bioconductor.org/biocLite.R")
 biocLite("Heatplus")
 library(Heatplus)
 
 set.seed(123)
 data <- array(ceiling(runif(100,min=1,max=100)), dim=c(10,10))
 colnames(data) <- rownames(data) <- 1:10
 pdf(file="file_1.pdf")
 plot(regHeatmap(data, col=heat.colors))
 dev.off()
そこで、以下のようにbreaksでカラーチャートの範囲を指定したのですが、ヒートマップの色が白と赤のみになってしまいました。~
&ref(file_2.pdf);~
 set.seed(123)
 data <- array(ceiling(runif(100,min=1,max=100)), dim=c(10,10))
 colnames(data) <- rownames(data) <- 1:10
 pdf(file="file_2.pdf")
 plot(regHeatmap(data, col=heat.colors, breaks=seq(1,100,10)))
 dev.off()
ヒートマップ化する行列の値とカラーチャートの色を一致させるにはどうすればよいでしょうか。"Heatplus"ライブラリーに限定せず、どんなライブラリーを使用しても構いません。環境はWindows 7の32bit、R 3.0.2です。~
~
お手数ですが、ご回答宜しくお願いします。~

//
- 自己レスになりますが、fieldsパッケージのimage.plot関数でデンドログラムはできないものの、希望する結果に近いものが得られました。ありがとうございました。 -- [[mappa]] &new{2015-07-02 (木) 07:49:47};
- 参考になれば -> http://d.hatena.ne.jp/myopomme/20111214/1323865945 -- [[akira]] &new{2015-07-06 (月) 14:09:59};

#comment

**関数内でのデータフレームの成分の参照 [#vb631601]
>[[kddoi]] (2015-06-29 (月) 20:34:11)~
~
お世話になっております。関数内でのデータフレームの成分を参照したいのですが、with関数が思った通りの動作をしません。~
attachとdetachを使えば上手く動くのですが、同一名の変数が存在する可能性などを考慮してできればwithを使いたいのですが、どのようにすればよろしいでしょうか?tmp1が想定していた書き方で、回避策がtmp2となっております。
 df <- data.frame(a=c(1,2,3), b=c(3,2,1))
 
 tmp1 <- function(eq, dat) {
   return(with(dat, eq))
 }
 
 tmp2 <- function(eq, dat) {
   attach(dat)
   d <- a+b
   detach(dat)
   return(d)
 }
 
 tmp1(a+b, df)
 tmp2(a+b, df)
以上、よろしくお願いいたします。~

//
- 久しぶりの投稿でpukiwikiの書式を忘れており、読み辛くて失礼いたしました。データフレームの作成からtmp2関数までがRコードです。やや素直でない実装ですが、一応以下のような解決策も別途見付けたので、追加で報告させていただきます。 -- [[kddoi]] &new{2015-06-29 (月) 20:45:20};
 tmp3 <- function(eq, dat) {
    eval(parse(text=paste("with(", deparse(substitute(dat)),",", deparse(substitute(eq)), ")")))
 }
- > 久しぶりの投稿でpukiwikiの書式を忘れており~
言い訳するより,「[[投稿における注意事項]]」を読んで,書式を確認して書き直せばよいだけでしょう。面倒だから,直しておきましたけど。~
計算式 a+b は,引数にできませんよね...~
実際の所,何がやりたいのかよくわからないけど,普通にやればよいだけでは? -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-06-29 (月) 21:40:14};
- 後からページ全体の編集ができることに気が付きましたが、既に直していただいた後でした。お手数をお掛けいたしました。実際はSurv(time, status)などSurvオブジェクトを関数の引数として受けとって、timeやstatusを関数内で参照したいのですが、fn(Surv(time, status), data=df)のような状況にも対応したい、というのが最終目標でした。 -- [[kddoi]] &new{2015-06-29 (月) 21:55:46};
- > のような状況&br;言っていることが,よくわからないなあ。呼出と関数の引数の対応を示せば解決法が示されるかもね。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-06-29 (月) 22:02:52};

#comment

**T検定を行うためのデータ加工について知りたい。 [#ra1d9702]
>[[ちまっく]] (2015-06-08 (月) 03:50:53)~
~
Rによる統計について。~
~
当方、Rの初心者です。~
Rによる「 T-検定 」を行いたい所存です。長文で失礼します。~
~
元データが約5万あり、T-検定を行うため、データの加工を簡単に行える方法をお聞きしたいです。~
~
元データは以下のような形です。~
~
セッションID,アイテムID,大分類,小分類,ブランド,閲覧日時,購入の有無~
6033,162429,日用品,歯ブラシ,647,43:06.0,0~
6033,249019,雑貨,枕カバー,240,43:17.0,1~
1003,169032,日用品,洗剤,340,21:34.0,0~
1003,42543,日用品,歯ブラシ,205,25:55.0,0~
1003,190788,日用品,洗剤,86,28:57.0,0~
7062,154026,日用品,歯磨き粉,47,43:56.0,0~
7062,30637,日用品,歯磨き粉,151,44:21.0,0~
8011,168023,雑貨,プランター,150,44:52.0,0~
8011,198903,雑貨,鉢,240,45:28.0,1~
8011,157220,日用品,シャンプー,9,47:22.0,0~
~
~
~
データを下データのように加工するための簡単な方法をお教えください。~
セッションID毎に~
大分類~
・購入の場合、購入するまでに大分類上で何品閲覧したか~
・非購入の場合、大分類上で何品閲覧したか~
小分類~
・購入の場合、購入するまでに小分類上で何品閲覧したか~
・非購入の場合、小分類上で何品閲覧したか~
滞在時間~
・購入の場合、購入するまで何時間、分、秒、滞在したか(閲覧一番目で購入した際は、0:00で良いです。)~
・非購入の場合、何時間、分、秒、滞在したか~
~
このようなデータの形にしたい↓~
大分類閲覧数(購入),大分類閲覧数(非購入)~
2,1~
1,1~
小分類閲覧数(購入),小分類閲覧数(非購入)~
2,2~
2,1~
滞在時間(購入),滞在時間(非購入)~
0:11,7:23~
0:00,0:25~
~
以上です。~
よろしくお願いします。~

//
- 返答がない理由は,データ処理の仕様が相当に複雑であるにも関わらず,説明が不十分であること。条件を満たすには相当なプログラムが必要であるにも関わらず,説明が不十分。または,そんな,面倒なものを回答するのはたいぎだなあということ。もうすこし,問題点を明確にして,解決が難しい点を明確に述べれば回答しようかなという人もいるかも。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-06-15 (月) 21:46:34};

#comment

**リストの中身に一括して関数を適用する。(eval(parse(text="")の中身の変数名を番号順に繰り返したい。) [#e9de135b]
>[[たけ]] (2015-06-03 (水) 20:56:34)~
~
以下のように、データよって長さが変化するinputについて、~
計算結果をリストに格納し、リストの各値に基づく集計をしたいと思います。~
最後のsum以下の部分をinputの数に合わせて増減させる良い方法がありましたらご教授いただければ幸いです。~
~
 input <- c(10,20,30)#与えるデータの数はいつも3つではない。
 list <- list(0)
 for(i in 1:length(input)){ list[[i]] <- input[i]/10} #任意の計算
 sum(list[[1]],list[[2]],list[[3]])#ここをinputの長さに応じて変化させたい。
 
なお、この例であればリストを展開してしまう方法もあると思いますが、実際の計算はリストの中にあるフォーマットは複雑で、sumではなく専用の関数なので、上記のようにリスト1からを並べて記述する必要があります。eval(parse(text="ここを工夫する"))などとしないといけないのではないかという所まで理解できています。~
どうぞよろしくお願いします。

//
- eval(parse...を使わなくても、do.call(sum, list) でOKでしょう。do.call(rbind, list(iris[1,], iris[2,], iris[3,])) のように使えます。 --  &new{2015-06-03 (水) 23:48:35};
- callという関数があることは認識していましたが、リストにこういう使い方できるものなのですね。シンプルな解決策で感動しました。 -- [[たけ]] &new{2015-06-05 (金) 02:16:50};

#comment

**半角文字から全角文字への変換 [#gb93a3dc]
>[[分分]] (2015-05-27 (水) 17:39:05)~
~
お世話になります。~
~
以下のように英数字やスペース、記号からなる半角文字列を全角文字列に変換したいのですが、よい方法があればご教示ください。環境はWindows 7のR 3.0.2です。~
~
 a <- c("asdf","12 /_")
~
宜しくお願いします。~

//
- chartr 関数を使う。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-05-28 (木) 11:49:42};
 h <- "A-Za-z0-9~!@#$%^&*()_+`={}|[]\\:\";'<>?,./ -" # "-" は一番最後に指定
 z <- "A-Za-z0-9~!@#$%^&*()_+`={}|[]\:”;’<>?,./ −"
 a <- c("asdf","12 /_")
 chartr(h, z, a)
- ご回答ありがとうございます。ニーズがないのかいろいろと検索しても方法が分からず困っていました。 -- [[分分]] &new{2015-05-28 (木) 19:30:17};
- 文字列中に"-"が含まれていると文字化けしてしまいます。なぜでしょうか? a <- c("asdf","1-2 /_");chartr(h, z, a) -- [[分分]] &new{2015-05-29 (金) 08:16:50};
- Windows ですか?Mac OS X では,問題なく動きますが。文字化けって,何がどのようにばけるのかな?&br;それはともかく,"-" はくせ者なので(regexp で範囲を表すメタ記号),以下のように,h, z の最後にある 1 文字( "-", "−")を取り除いて,"-" の変換は2段階目に gsub でやるとか?  -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-05-29 (金) 11:10:00};
 > h <- "A-Za-z0-9~!@#$%^&*()_+`={}|[]\\:\";'<>?,./ " # 最後の - を取り除く
 > z <- "A-Za-z0-9~!@#$%^&*()_+`={}|[]\:”;’<>?,./ " # 最後の - を取り除く
 > a <- c("asdf","1-2 /_")
 > gsub("-", "−", chartr(h, z, a))
 [1] "asdf"     "1−2 /_"
- Windowsです。上記のように実行すると"asdf"     "x「「\n嗟\020" と出力されます。ご提示頂いたgsubを使う方法だと文字化けせずに処理できました。ありがとうございました。 -- [[分分]] &new{2015-05-29 (金) 15:14:10};

#comment

**印刷について [#pf080e3d]
>[[cloud]] (2015-05-24 (日) 12:48:35)~
~
お世話になります。~
~
windows7及び8でR i386 3.2.0を使用しています。~
clanはRODBCのみ使用しています。~
デバイスはwin.print()を使用しています。~
~
複数枚のグラフをループさせて1度に作成しています。~
1枚ごとにdev.offしている為、plot関数を通る度にwindowsのプリンタダイアログが表示されて印刷ボタンをクリックしなければならない為、効率が良くありません。~
~
これを回避して、印刷ボタンを1回クリックのみでグラフを連続印刷する方法をご存知ないでしょうか。~
解説書や、webを調べたのですが、印刷については詳しい資料が見つからなくて困っています。解決策をご教示頂ければ幸いです。~

//
- ?win.printとして, printer引数について調べましょう --  &new{2015-05-25 (月) 19:53:57};
- for (j in 1:5) { -- [[cloud]] &new{2015-05-25 (月) 22:12:15};
- ありがとうございました。プリンタ名を指定するとダイアログは出なくなり連続印刷も成功しました。 -- [[cloud]] &new{2015-05-25 (月) 22:43:08};

#comment

**gnupack12.03におけるESSの導入方法 [#p34d08cb]
>[[gnu]] (2015-05-19 (火) 11:43:15)~
~
お世話になります。~
~
Windows7でgnupack_devel-12.03のemacsを使用しています。~
ESSを使用したいと思い、~
1 .emacs.d/site-lispにessフォルダを作成~
2 同フォルダ内のess/lisp/ess-site.elの329行を~
 Rのインストール先に合わせて次のように変更~
(setq-default inferior-R-program-name "C:/r/bin/i386/Rterm.exe")~
3 init.elに次の行を追加~
(require 'ess-site)~
~
その上でemacsを再起動すると、次のようなメッセージが出て、ESSが機能しません。
 Warning (emacs): None of 'w32-short-file-name, 'win32-short- file-name,
 or 'mswindows-short-file-name are defined!
 You will have to manually set   ess-program-files (in ess-custom.el) to
 the correct "8.3"-style directory name.
 Warning (initialization): An error occurred while loading `/home/.emacs.d/init.el':
 
 Symbol's function definition is void: w32-short-file-name
 ...
ess-custom.elを調べてみたのですが、修正方法がわからず困っています。~
解決策を御教示いただければ幸いです。~

//
- Windows固有の話だと回答がつきにくいですね。ホームディレクトリの.emacs.d/site-lispにessを配置したので、どうしても8.3形式のフォルダ名が必要になってトラブルになっていると予想。正攻法はess-custom.elを正しく編集するのだろうけど、essの配置先をC:/r/essみたいな場所にして、init.elにC:/r/essのパスを追加すると、8.3形式に読み替える必要が無くなって、簡単に解決するかも。 --  &new{2015-05-19 (火) 12:22:22};
- 早速の御回答ありがとうございます。 御指示の方法を試してみましたが、 同じエラーが表示されてしまいました。残念です。 -- [[gnu]] &new{2015-05-19 (火) 13:27:41};
- じゃあ、正攻法でess-program-filesを8.3形式で設定しよう。[[ここ:https://stat.ethz.ch/pipermail/ess-help/attachments/20120314/d9e63eaa/attachment.pl]]を参考にして、init.elに追記すればどうだろう。 --  &new{2015-05-19 (火) 15:49:48};
- いろいろと試行錯誤していたため、お返事が遅くなって申し訳ありません。 御教示のように、init.elに次の1行を追加しました。
 (setq ess-program-files "/c/R-3.2.0/bin/i386/Rterm.exe")
すると、ワーニングが次の4行に減りました。  
 Warning (emacs): None of 'w32-short-file-name, 'win32-short-file-name, 
 or 'mswindows-short-file-name are defined! 
 You will have to manually set   ess-program-files (in ess-custom.el) to 
 the correct "8.3"-style directory name. ~ 
また、M+X RでRが起動しました!しかし、次のようなメッセージが出て、 Rがうまく機能しません。  
 load ESSR: + + + + Error in file(filename, "r", encoding = encoding) :     
 コネクションを開くことができません   
 追加情報: Warning message:  In file(filename, "r", encoding = encoding) :
 ファイル '/home/.emacs.d/site-lisp/ess/etc/ESSR/R/.load.R' を開くことができません:
 No such file or directory   
しかし、「.load.R」というファイルは確かに存在しています。 御陰様で、一歩前進しましたが、問題が残っている状況です。 -- [[gnu]] &new{2015-05-20 (水) 11:32:22};
- ess-program-filesには、名前の通り、Rのインストール先を設定するのではなく、ESSのインストール先を指定すると思うのですが。またインストール先は8.3形式で指定することもお忘れずに。/home/.emacs.d/site-lisp/ess/etc/ESSR/R/.load.Rの存在をどうやって確認しましたか?エクスプローラなどファイラーでクリックしながら.load.Rを見つけたのなら、.load.RというファイルがHDDのどこかに存在しても、/home/.emacs.d/site-lisp/ess/etc/ESSR/R/.load.RというPATHの.load.Rは存在しないのでしょう。 --  &new{2015-05-20 (水) 21:21:12};
- 御指摘のとおり、init.elを次のように変更してみました。 
 (setq ess-program-files "c:/GNUPAC~1.03/home/EMACS~1.D/SITE-L~1/ess/lisp/ess.el") 
しかし、4行のワーニングは相変わらず出てしまいます。 -- [[gnu]] &new{2015-05-21 (木) 11:21:18};
- > /home/.emacs.d/site-lisp/ess/etc/ESSR/R/.load.R&br;について指摘された件はどうなの? -- [[どうでもいいけど]] &new{2015-05-21 (木) 23:20:43};
- 失礼しました。 > /home/.emacs.d/site-lisp/ess/etc/ESSR/R/.load.R については、emacsから普通にC+X C+Fで問題なく開けます。 -- [[gnu]] &new{2015-05-22 (金) 10:10:46};

#comment

**zooライブラリーを、古いバージョンに戻す方法 [#o716d2ab]
>[[tt]] (2015-05-14 (木) 13:14:39)~
~
こんにちは。~
zooのパッケージを最新のzoo_1.7-12に更新後、既存のプログラムで問題が起こるようになりました。とりあえず、旧バージョンに戻したいのですが、どうすべきがご教授頂けないでしょうか?~
使用しているのは、Windows版R i386 3.1.3です。~
よろしくお願いします。~

//
- どのような問題が起きるのか。それを解決するにはどのようにしたらよいかが,第一ではないでしょうかね。&br;パッケージのバージョンダウンならば,http://cran.md.tsukuba.ac.jp/bin/windows/contrib/ から必要なものをダウンロードして,自分でインストールすればよいでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-05-14 (木) 13:59:52};
- 河童様、ありがとうございます。とりあえず動く環境を取り戻してから、問題を考えようと思っていました。 -- [[tt]] &new{2015-05-15 (金) 00:53:02};
- 複数のバージョンのパッケージをインストールして使い分けることは可能です。単純に旧バージョンに戻すのではなく、別の場所に新しく旧バージョンをインストールしてはいかがでしょうか。ただし、R 3.1.3用のzooの旧バージョンのバイナリが見あたらない場合はソースファイル(tar.gzファイル)からインストールすることになりますが、コンパイルに慣れていないWindowsユーザだとそれなりの勉強と試行錯誤が必要になる覚悟が必要です。 --  &new{2015-05-16 (土) 18:14:14};
- ありがとうございます。河童様のご指摘のサイトから、旧バージョンのライブラリー(バイナリーを含む)を入手できました。最新バージョンのライブラリーはディレクトリ名を変更し、旧バージョンを読み込むようにすると、問題なく使えています。 -- [[tt]] &new{2015-05-17 (日) 14:57:07};
- 該当ライブラリーのNEWSに、従来からの変更点が具体的に記されていました。その情報から問題点を解決できました。ありがとうございます。 -- [[tt]] &new{2015-08-02 (日) 17:25:03};

#comment

**3次元有向線分とラベルの表示 [#u6a12307]
>[[たにし]] (2015-05-09 (土) 13:26:58)~
~
3次元空間上の有向線分を始点/終点の座標を指定して表示し、あわせて当該有向線分に対するラベルを表示するにはどうしたらよいでしょうか。有向ですので単なる線ではなく矢印等の形になっていないと困ります。~

//
- どこまでわかっているのかわからないのですが,rgl パッケージの segments3d などを使えばよいでしょう。ただ,arrows に対応するような関数はないので,矢印の先については自作するしかないかな。points3d でごまかすことにするか。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-05-10 (日) 08:53:39};
- やはり出来合いの関数などはありませんか。 -- [[たにし]] &new{2015-05-10 (日) 11:18:54};
- plot3Dパッケージに関数arrows3Dがあります.ヘッドの形はtypeで指定できます. --  &new{2015-05-14 (木) 13:41:52};
- ありがとうございました。 -- [[たにし]] &new{2015-05-18 (月) 17:56:51};

#comment

**glmmMLの結果のcallの画面出力をテキスト化してエクセルに書き込むには [#ia019584]
>[[ぷうや]] (2015-05-08 (金) 17:18:36)~
~
glmmMLの実行結果のcallを、エクセルファイルに出力したいのです。やり方を教えてください。~
~
 > myResult <- glmmML(y ~ x1 + x2 + x3, family = "poisson", data = myData, cluster = myID)
 
 > myResult$call
 glmmML(formula = y ~ x1 + x2 + x3, family = "poisson", data = myData, cluster = myID)
~
この、"glmmML(formula = y1 ~ x1 + x2 + x3, family = "poisson", data = myData, cluster = myID)"をそのままテキスト化して、エクセルのシートの一つのセルにwrite.xlsx()を使って自動で書き込むコードを書きたいのです。クリップボードなどを経由する方法ではなく、指定したファイル名、シート名のエクセルシートに書き込む方法が知りたいです。ちなみに使用OSはMac OS 10.9.5です。よろしくお願いします。~

//
- 1行だけ書くのですか(どういう目的なんでしょうかね?)。&br;write.xlsx を使って,myResult$call で書かれるとおりの文字列を書くのなら,以下のようにすればできることはできますが。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-05-08 (金) 17:57:57};
 myID <- factor(rep(1:20, rep(5, 20)))
 y <- rpois(100, lambda=2)
 x1 <- rnorm(100)
 x2 <- rnorm(100)
 x3 <- rnorm(100)
 myData <- data.frame(y, x1, x2, x3, myID)
 # ここまで,テストデータの用意
 myResult <- glmmML(y ~ x1+x2+x3, family="poisson",
                    data = myData, cluster = myID)
 # 以下の 3 行でファイルに出力
 a <- as.character(myResult$call) # formula を character に
 b <- sprintf('%s(formula = %s, family = "%s", data = %s, cluster = %s)', # 文字列作成
              a[1], a[2], a[3], a[4], a[5])
 write.xlsx(b, file="foo.xlsx", sheetName="bar", # ファイルへ出力
            col.names=FALSE, row.names=FALSE)
- なるほど!やはり自分で整形しなおさなくてはならないのですね。ちなみに目的はというと、yだけ代えた複数のモデル実行結果を同じエクセルファイルに表形式で書き出すのですが、どんな条件で実行したか、覚え書き程度にcallを書き込んでおきたかったのです。ありがとうございました。 -- [[ぷうや]] &new{2015-05-11 (月) 12:01:51};

#comment

**カナ文字を列名に持つ行列を Sweave 処理するときにエラー [#s0e3a17e]
>[[河童の屁は,河童にあらず,屁である。]] (2015-04-22 (水) 13:45:58)~
~
たまには私も質問したい。~
以下のような内容の test.Rnw (エンコーディングは EUC-JP)~
 <<>>=
 result <- matrix(1:4, 2)
 colnames(result) <- c("a", "ア")
 result
 @
を,以下のようなファイルで Sweave 処理すると~
 #!/usr/bin/Rscript --vanilla
 Sweave("test.Rnw", encoding="euc-jp")
できあがる test.tex の大きさが途方もなく大きくなる。~
 -rw-r--r--  1 foo  503  1000187  4 22 13:33 test.tex
どんな風になっているか hexdump で見てみると~
 0000080 7d 0a 20 20 20 20 20 61 20 20 20 a5 a2 20 20 20
 0000090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
 *
 00f42c0 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 5b 31
となっており,* の部分に 20 がびっしりと詰まっている。~
カタカナの列名を付けようとするとこのようなことが起こるようだ。~
 <<>>=
 result <- matrix(1:4, 2)
 colnames(result) <- c("a", "b")
 result
 @
だと,~
 -rw-r--r--  1 foo  503  183  4 22 13:40 test.tex
で,何の問題もない。~
何がいけないのか,回避策はあるのか。~

//
- Euc-jpなRを用意できないので追試できませんが、少なくともutf-8環境だと正常に動作しています。回避策として「utf-8を使う」というのはいかが。 --  &new{2015-04-22 (水) 14:01:58};
 \documentclass{jsarticle}
 \begin{document}
 <<echo=false>>=
 result <- matrix(1:4, 2)
 colnames(result) <- c("a", "ア")
 result
 @
 \end{document}
結果
 \documentclass{jsarticle}
 \usepackage{Sweave}
 \begin{document}
 \begin{Schunk}
 \begin{Soutput}
      a ア
 [1,] 1  3
 [2,] 2  4
 \end{Soutput}
 \end{Schunk}
 \end{document}
hexdumpの結果
 $ hexdump -C test.tex
 00000000  5c 64 6f 63 75 6d 65 6e  74 63 6c 61 73 73 7b 6a  |\documentclass{j|
 00000010  73 61 72 74 69 63 6c 65  7d 0a 5c 75 73 65 70 61  |sarticle}.\usepa|
 00000020  63 6b 61 67 65 7b 53 77  65 61 76 65 7d 0a 5c 62  |ckage{Sweave}.\b|
 00000030  65 67 69 6e 7b 64 6f 63  75 6d 65 6e 74 7d 0a 5c  |egin{document}.\|
 00000040  62 65 67 69 6e 7b 53 63  68 75 6e 6b 7d 0a 5c 62  |begin{Schunk}.\b|
 00000050  65 67 69 6e 7b 53 6f 75  74 70 75 74 7d 0a 20 20  |egin{Soutput}.  |
 00000060  20 20 20 61 20 e3 82 a2  0a 5b 31 2c 5d 20 31 20  |   a ....[1,] 1 |
 00000070  20 33 0a 5b 32 2c 5d 20  32 20 20 34 0a 5c 65 6e  | 3.[2,] 2  4.\en|
 00000080  64 7b 53 6f 75 74 70 75  74 7d 0a 5c 65 6e 64 7b  |d{Soutput}.\end{|
 00000090  53 63 68 75 6e 6b 7d 0a  5c 65 6e 64 7b 64 6f 63  |Schunk}.\end{doc|
 000000a0  75 6d 65 6e 74 7d 0a                              |ument}.|
 000000a7
- よんどころない理由で,euc-jp を使わないといけないので。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-22 (水) 14:07:21};
- uft-8環境で問題のないtexファイルを作成してから、nkfで最終的なeuc-jpのtexファイルを作成するように、Makefileを書くとか、シェルスクリプトを書くとか。 --  &new{2015-04-22 (水) 22:16:07};

#comment

**数字から文字を取って平均値を求めたいのですが [#g53e54d4]
>[[さくら]] (2015-04-22 (水) 13:40:23)~
~
66avg  のような数字が並んでいます。(csvのファイルになっています)~
まず,数字からavgをとります~
次に,上から3つずつ平均値を求めます.~
方法を教えてください。~
困っています。~

//
- データをベクトルに入れて(入っているとして),以下のようにする。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-22 (水) 13:55:34};
 x <- c("55avg", "66avg", "17avg", "62avg", "30avg", "69avg",
        "38avg", "91avg", "90avg", "34avg", "56avg", "78avg")
 colMeans(matrix(as.numeric(sub("avg", "", x)), 3))
- ありがとうございました.X=read.csv("197714.csv") cclMeans(matrix(as.numeric(sub("avg","",x)),3))と入力するとcclMeansが使えないというメッセージがでてしまいます.教えてください -- [[さくら]] &new{2015-04-22 (水) 18:14:41};
- cclMeans じゃなくて colMeans だよ。しかも,read.csv で X に読み込んだのなら大文字の X にしないと。意味をちゃんと考えてね。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-22 (水) 18:15:47};
- すみません 直しました 今度は,強制変換により NA が生成されました と出てしまいます 平均値が表示されればいいのですが お願いします -- [[さくら]] &new{2015-04-22 (水) 18:34:09};
- ああそう。x には文字列ベクトルが入っているべきだけど,read.csv で読み込むと,Factor になっているのだね。
 colMeans(matrix(as.numeric(sub("avg", "", as.character(x[,1]))), 3))
としないとだめだね。&br;それとね,197714.csv にどのようにデータが入っているか,最初の数行で良いから,書いておいて! -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-22 (水) 18:37:50};
- 平均値が出ました!!!数字を1行に並べるにはどうしたらいいでしょうか.画面をいじっても2行になってしまいます.データはエクセルの表に上から23avg,65avg,87avgのような数字が並んでいます。よろしくお願いします。 -- [[さくら]] &new{2015-04-22 (水) 19:20:45};
- ちょっとは自分で出来ませんかね?R は1行の文字数を指定できるので,実行の前に,options(width=200) とでもすれば。200 でも 300 でも好きなだけの文字数を指定すれば。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-22 (水) 20:03:48};
- これは便利ですね.今まで苦労していました。河童さんに感謝します. -- [[さくら]] &new{2015-04-22 (水) 21:07:19};

#comment

**pdf()について [#a01cf1d0]
>[[Pikyu]] (2015-04-21 (火) 20:26:33)~
~
お世話になります。pdf()で横幅の広い画像を保存したいのですが、widthが200を超えると保存されたファイルが真っ白になってしまいます。
 pdf(file="abc1.pdf", width=200, height=7)
 plot(1:10)
 dev.off()
 
 pdf(file="abc2.pdf", width=201, height=7)
 plot(1:10)
 dev.off()
この現象を回避するにはどうすべきでしょうか。環境はWindows 7 64bit, R3.1.2です。~
~
よろしくお願いします。~

//
- 横幅が200インチと言うことは5.08mですよね。本当にそのサイズで画像を用意するのですか?そこまでいくと、ポスターというより壁紙ですね。なお、pdf形式のグラフィックディバイスは、pdf()の他にもcairo_pdf()などいくつかの選択肢がありますので、出来るかどうか試してみて下さい。こちらにはWindows環境がないので確かめられません。 --  &new{2015-04-21 (火) 20:55:50};
- PDF ファイルの特性を理解しておられない。PDF ファイルの画像は,出力時に元のファイルの大きさに関わらず任意の大きさで印刷できるのです。しかも,png や jpeg とは違って,拡大しても,ギザギザにならない。つまり,元のファイルはほどほどのサイズで作っておき,出力時に大きなサイズを指定すればよいのです。width=2, height=0.07 で出力したファイルを
 lm(Volume ~ A-3, data = x)
このような列名を含むdataではどのように説明変数を指定すればよいのでしょうか。~
~
宜しくお願いします。~

//
- 苦もないこと。そのような列名を colnames で付け替えるとよいでしょう。そもそも,列名の命名規則に制限があるのですから,それにわざわざあらがう必要はないでしょう。 -- [[河童の屁は,河童にあらず,屁である。]]  100 倍して印刷すればよいだけのことでは?(そんな極端なことしたことはないけど,出力時に倍率を上げて大きな出力をしたことはあるので)。高さはほぼ 7*2.5 = 17.5 cm に過ぎない ので,長さの制限のないプリンタ(ドライバ)を使えば,どうってことないでしょ。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-21 (火) 21:13:09};
- 河童さん、実際にpdf(file="abc2.pdf", width=2, height=0.07);plot(1:10)とやってみてから書き込んでいますか? --  &new{2015-04-21 (火) 21:18:06};
- 私は,河童ではないし...&br;> 実際にpdf(file="abc2.pdf", width=2, height=0.07);plot(1:10)とやってみてから書き込んでいますか?&br;確かに,この時点では実際にやって書いているわけではありませんでした。&br;あなたの指摘は,あなたが書いたプログラムでは,
 以下にエラー plot.new() : figure margins too large
が出るでしょう?ということなんでしょうかね。そうね。そりゃそうだわ。縦横比がでたらめなんだもの。&br;でも,以下のようなプログラムではエラーメッセージは出ないし,出来たファイルを見てみるとそれなりの図は描けているでしょう?更に適切なグラフ(拡大印刷したらちゃんとしたグラフになるような)を描くには,もう少し注意が必要でしょうけど。もっとも,本当にそのようにして描いたグラフを拡大印刷したら目的のグラフが得られるかどうかは知らない(ちゃんと設定すれば出来るはずとは思うのだけど,そこまでの自信もないし,やってみる暇もない)&br;pdf ファイルの仕様策定者と R の開発者に敬意を払いましょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-21 (火) 21:54:43};
 pdf(file="abc2.pdf", width=2, height=0.07)
 old <- par(mar=0.01*c(3,3,1,1))
 x <- seq(0, 100*pi, length=1000000)
 y <- sin(x)
 plot(x, y, cex=0.005, xaxt="n", yaxt="n")
 par(old)
 dev.off()
または,
 pdf(file="abc2.pdf", width=2, height=0.07)
 old <- par(mar=0.01*c(3,3,1,1))
 plot(c(0, 2), c(0, 0.07), type="n", xaxt="n", yaxt="n")
 text(0, 0.035, paste(rep("1234567890", 100), collapse=""), cex=0.1)
 par(old)
 dev.off()
あ,ごめんごめん,質問者の方へ&br;最初に戻って,&br;> widthが200を超えると保存されたファイルが真っ白になってしまいます&br;あなたの環境は Windows なんでしょうかね?Mac だと,width=201 でも,ちゃんと描かれていましたよ。&br;Windows の場合も,ちゃんと描かれているのでは?縮小率が大きすぎて,図の細部が見えなくなっているだけではないのかな?図を拡大表示してみれば,ちゃんと描画されているのが確認出来るのではないかと思いますが。ちゃんと描画できていれば,ちゃんと印刷できると思いますよ。~
&ref(fig.png);
- 皆さんご回答ありがとうございました。width=201では軸すら表示されないので、そういう仕様になっているのでしょう。画像を大きくせず、文字を小さくして対応してみます。 -- [[Pikyu]] &new{2015-04-22 (水) 08:00:31};
- acrobat readerでは表示出来ないというだけですが... -- [[なかま]] &new{2015-04-22 (水) 08:51:48};
- > width=201では軸すら表示されないので、そういう仕様になっているのでしょう。&br;スレッドのどこを読んでいるのかな?Windowsでもちゃんと描かれている。acrobat reader では見えないが,「リーダー」で開いて拡大してみ(ファイルアイコンを右クリックして「プログラムから開く」で「リーダー」を選択)。ちゃんと見えるから。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-22 (水) 10:06:21};

#comment

**カプランマイヤー曲線にn.at.riskを入れたいのですが [#r8415b3c]
>[[sawako]] (2015-04-21 (火) 08:43:20)~
~
初めまして。~
初歩的な質問で恐縮です、ヒントでもいいので教えていただければ幸いです。~
よろしくお願いいたします。~
~
~
survplotを用いてカプランマイヤー曲線にn.at.riskの表をいれようとrmsパッケージをダウンロードしました(「パッケージ ‘rms’ は無事に展開され、MD5 サムもチェックされました」の表記確認)。~
~
「  関数 "survplot" を見つけることができませんでした」のエラーメッセージが出てしまいます。~
~
ネット上でいろいろ調べて「library(rsm)」「library(survplot)」などのコマンド入力しているような記述もあったのですが、どちらも「’ ’という名前のパッケージはありません」と出てきてしまいます。~
~
またlibrary(survival)は実行済みです。~
~
お知恵を貸していただきたく思います。よろしくお願いいたします。~

//
- 「rmsパッケージをダウンロードしました」って,どうやってダウンロードしたんですか?install.packages でやったの?library(rms) で「'rms' という名前のパッケージはありません」が出るなら,インストールされていないでしょう。rsm は無関係なパッケージだし,survplot は rms に含まれる関数であってパッケージじゃないので,library(survplot) なんてでたらめやってもだめ。  -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-21 (火) 09:56:47};
- コメントありがとうございました。「ダウンロード」という表現が間違っていたのですね、申し訳ございませんでした。「パッケージのインストール」というところか「rms」をダブルクリックしました。「パッケージ ‘rms’ は無事に展開され、MD5 サムもチェックされました」の表記はインストールできたという意味とは違うのですね。 -- [[sawako]] &new{2015-04-21 (火) 11:02:51};
- 「パッケージ ‘rms’ は無事に展開され、MD5 サムもチェックされました」」だけでなく,「rms」をダブルクリックした後にコンソールに表示された全てをここにコピー&ペーストしてください。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-21 (火) 11:36:15};
- rmsという名前のパッケージなのに、library(rsm)とタイプミスをしているのは、本当にそう入力したのか、それともここに書き込むときにタイプミスしたのか、どっちですか?入力したままをコピペするか、タイプミスが完全になくなるまで推敲してくれないと、助言する側も迷走するよ。 --  &new{2015-04-21 (火) 21:08:04};
- 「library(rsm)とタイプミスをしているのは、本当にそう入力した」のでしょうね。よくわからないから,適当に,色々やったと言うことでしょう。回答者側としても,迷走なんかしてないつもりですけど。そんな些細なことに影響されるほどナイーブではないつもりですけど。どうせ,いいかげんな対応をして,応答も中途で打ち切るような人だとしたら,それなりの帰結を生むだけでしょう。知ったこっちゃない。好きなだけ悩めばよい。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-21 (火) 21:22:08};

#comment

**マージとsumを同時にやる方法 [#be32558d]
>[[うま]] (2015-04-14 (火) 17:58:19)~
~
連日失礼します。~
▼サンプル
 識別ID,視聴時間,性別
 A,1,men
 A,2,men
 A,3,men
 B,4,men
 B,5,men
 B,6,men
 B,7,men
 C,8,women
 C,9,women
 D,10,women
▼求める結果
 A,6,men
 B,22,men
 C,17,women
 D,10,women
さらにここから散布図を作りたいと思っています。~
(男性女性別にどこに集中しているのかの傾向を見たいと思っています。~
今、下記サイトを見ながらトライしているのですが、一日かけても導き出せず。~
http://sssslide.com/www.slideshare.net/abicky/r-10128090~
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/43.html~
~
どうぞよろしくお願いします!~

//
- ちょっと不細工だけど以下のようにするか。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-14 (火) 19:17:50};
 > d <- as.data.frame(t(sapply(split(a, a$識別ID), function(d)
 +           list(as.character(d$識別ID[1]), sum(d$視聴時間), 
 +                as.character(d$性別[1])))))
 > d <- data.frame(matrix(unlist(d), ncol=3))
 > d[,2] <- as.numeric(d[,2])
 > d
   X1 X2    X3
 1  A  4   men
 2  B  3   men
 3  C  2 women
 4  D  1 women
散布図ってどんなの?横軸に性別縦軸に視聴時間というのなら,
 plot.default(d[,3],  d[,2], pch=19)
で,描けるでしょ。
- ありがとうございます。色々とすみません。助かりました。 -- [[うま]] &new{2015-04-14 (火) 20:03:52};

#comment

**重複カウントと平均について [#y064e1df]
>[[うま]] (2015-04-13 (月) 19:43:22)~
~
お世話になります。~
~
Rで以下の式を計算しようとしているのですが、ちょうどよい方法が見つかりません。~
マージ関数やsumif関数などを利用したのですが、上手くいかなく思案しています。
 識別ID,視聴時間,性別
 A,1,men
 A,2,men
 A,3,men
 B,4,men
 B,5,men
 B,6,men
 B,7,men
 C,8,women
 C,9,women
 D,10,women
求める結果
 men
  sum=28, ave=14
 women
  sum=27, ave=13.5
識別IDは同一だと同じ人であることを指しています。~
上記のサンプルでいうと視聴者は4人ということになります。~
~
マージやsumifなどでは上手くいかないものなのでしょうか?~
ヒントだけでもお願い致します。~

//
- ave は,性別の合計視聴時間を人数で割るということと解釈して,以下のようになるかな。データフレームの名前を a として,
 > sapply(split(a, a$性別), function(b) c(sum(b$視聴時間), sum(b$視聴時間)/length(levels(factor(b$識別ID)))))
      men women
 [1,]  28  27.0
 [2,]  14  13.5
うまい方法より,確実な方法を求めるべし。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-13 (月) 23:27:16};
- カッパさん -- [[うま]] &new{2015-04-14 (火) 17:14:32};
- 河童さん ありがとうございます。助かります。ちなみにですが、Aの視聴者、Bの視聴者、Cの視聴者のそれぞれの視聴時間を別テーブルに保存する事は可能なのでしょうか?もし可能であれば教えていただけると幸いです! -- [[うま]] &new{2015-04-14 (火) 17:15:48};
- 視聴者ごとの散布図を作れないかと思っています。自分でも考えているのですが、こちらも同じく良い方法が見つからず -- [[うま]] &new{2015-04-14 (火) 17:16:41};
- 「それぞれの視聴時間を別テーブルに保存」って,どういうこと?解答例で split を使っているのがまさにそれでは? -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-14 (火) 19:08:57};
- データフレームの名前をaとして、
 > (t4person <- aggregate(視聴時間 ~ 性別 + 識別ID, data = a, FUN = sum))
    性別 識別ID 視聴時間
 1   men      A        6
 2   men      B       22
 3 women      C       17
 4 women      D       10
 > (tsum4sex <- aggregate(視聴時間 ~ 性別, data = t4person, FUN = sum))
    性別 視聴時間
 1   men       28
 2 women       27
 > (tmean4sex <- aggregate(視聴時間 ~ 性別, data = t4person, FUN = mean))
    性別 視聴時間
 1   men     14.0
 2 women     13.5
 -- [[名無し]] &new{2015-04-14 (火) 21:42:51};

#comment

**パッケージのロード情報をワークスペースに保存出来るでしょうか? [#j7096dfa]
>[[ぺぃにゃん]] (2015-04-11 (土) 14:54:36)~
~
お世話になります。~
~
RGuiのコンソール画面で幾つかパッケージを呼び出して作業を行い、途中で作業を終え一旦終了する際にワークスペースの保存を選択すると次回起動時にオブジェクトの情報が再現されそこから作業を再開する事が出来ます。~
~
この時それまで使用していたパッケージもロード済みの状態で作業が再開出来ると面倒がなくて良いのですが何かいい方法はございますでしょうか?~
~
保存する際にオプションがある、もしくはパッケージの情報は別で保存しておいて別のコマンドで一気に呼び出してロードするなどございましたらご示唆よろしくお願いします。~

//
- いつも同じことをやるなら,.Rprofile に library(hogehoge) とか,そのほかいつもやることを書いておけばよいのでは?ようするに,R は起動したらと言うか起動する前に .Rprofile に書いてあることをやるということ。&br;必要がなくなったら .Rprofile を書き直しておく(元に戻す)。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-11 (土) 19:16:56};

#comment

**関数内での変数の指定について [#c7866c37]
>[[かず]] (2015-04-11 (土) 13:53:34)~
~
お世話になります.~
自作関数内で,nlmeパッケージのgls関数を呼び出したいのですが,
 library(nlme)
 myfunc <- function(data, y, group, time, id, cov) {
   outcome <- deparse(substitute(y))
   group <- deparse(substitute(group))
   time <- deparse(substitute(time))
   cov <- deparse(substitute(cov))
   form <- paste(outcome,'~ as.factor(', group,')+as.factor(',time,')+as.factor(',
                 group,'):as.factor(',time,')',cov)
   id <- deparse(substitute(id))
   res <- gls(as.formula(form),
             data=data, corr=corSymm(form=~1|id), 
             weights=varIdent(form=~1|time))
   return(res)
 }
 
 myfunc(BodyWeight,weight,Diet,Time,Rat, )
上記の実行で,
 gls(weight~Time+Diet,
     data=BodyWeight, corr=corAR1(form=~1|Rat), 
     weights=varIdent(form=~1|Time))
の結果を得ることを意図しているのですが,myfunc関数の引数であるidとtimeをmyfunc関数内でgls関数に渡す方法がわかりません.~
deparse関数で文字列になってしまっているからなのかとも思いますが,そのままidと書いても駄目のようです.~
ご教示のほどよろしくお願いいたします.~

//
- すみません,下段は,
 gls(weight~as.factor(Time)+as.factor(Diet),
     data=BodyWeight, corr=corAR1(form=~1|Rat),
     weights=varIdent(form=~1|Time))             # 投稿法を良く読むように!!!
の間違いです.よろしくお願いいたします. -- [[かず]] &new{2015-04-11 (土) 16:34:35};

#comment

**℃の表示 [#q78daa54]
>[[けい]] (2015-04-06 (月) 15:39:48)~
~
いつも参考にさせていただいております。~
今回の質問は、温度表示の「℃」についてです。~
日本語変換の「℃」では文字化けすることもありうるので、英語表現にしていますが、
 lab = expression (paste("Temperature", "(", ~degreeC, ")" ))
 text(0.5, 0.5, lab)
で表示させると、上付きの○部分がCと同じ大きさになってしまい、バランスが悪いです。「℃」のような表現ができればいいのですが。~
○部分を小さくすることは可能でしょうか。~
よろしくお願いいたします。~

//
- expression は expression(paste("Temperature", "(", degree, C, ")")) とかかな?Mac なら,~
&ref(deg.png);~
のようにキレイに表示されるけど。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-06 (月) 16:40:03};
- Windowsでも問題ないようです。ありがとうございました。 -- [[けい]] &new{2015-04-06 (月) 20:38:59};

#comment

**2軸のグラフ作成 [#d6b0f6fe]
>[[TGI]] (2015-04-06 (月) 08:25:40)~
~
~
stripchart()の右側のy軸に異なる目盛を作り、abline()で線を追加したいのですが、以下のように実行すると右側のy軸の範囲が左側のy軸の範囲に設定されてしまいます。
 y <- -10:9
 x <- factor(rep(1:2, 10))
 stripchart(y~x, vertical=TRUE)
 abline(h=3, col="red", lwd=2, lty="solid", ylim=c(0,10), xaxt="n", yaxt="n")
 axis(side=4, at=seq(0, 10, by=2))
そこで、以下のようにabline()の前にstripchart()でプロットを仮作成するとうまくいくのですが、もっとスマートな方法はないでしょうか。
 y <- -10:9
 x <- factor(rep(1:2, 10))
 stripchart(y~x, vertical=TRUE)
 par(new=TRUE)
 stripchart(0, xaxt="n", yaxt="n", ylim=c(0, 10), col="white")
 abline(h=3, col="red", lwd=2, lty="solid", ylim=c(0, 10), xaxt="n", yaxt="n")
 axis(side=4, at=seq(0, 10, by=2))
宜しくお願いします。~

//
- 2軸のグラフは,普通は,2 つ(以上)のデータを同じ図に描き込むために使われるので,使い方としては後者のようにグラフ描画関数を par(new=TRUE) を挟んで 2 回使うのがまともな方法です。例示されたプログラムは,もう一つのやり方です。グラフの左と右に描かれる縦軸をそれぞれ u,v とすると,u の -10 〜 9 の目盛りは v の 0 〜 10 に対応する訳です。ということは v の目盛りを描くには,at=seq(-10, 9, length=11) の位置に, labels=0:10 という数値を描くことになります。次に,v の目盛りの 3 の位置に水平線を描くわけですが,このグラフの縦軸は -10 〜 9 であって,0 〜 10 ではないのですから,v が 3 になるような u はいくつかを逆算しないといけません。u と v の関係式は,v = (10*u+100)/19 ですから,v に 3 を代入して u = (19*3-100)/10 となるので,abline では,h=(57-100)/10 を指定することになる訳です。&br;というわけで,まとめると以下のようなプログラムになるでしょう。なお,abline の引数に ylim, xaxt, yaxt が指定されていますが,(試行錯誤の結果が残っているのでしょうが,)abline の引数としては意味を持ちません。
 y <- -10:9
 x <- factor(rep(1:2, 10))
 stripchart(y~x, vertical=TRUE)
 abline(h=(57-100)/10, col="red", lwd=2, lty="solid")
 axis(side=4, at=seq(-10, 9, length=11), labels=0:10)
このように,グラフの座標系と軸の座標系が一致しない場合には,いちいち換算してやらないといけないので,par(new=TRUE) を使う方法が勧められるでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-06 (月) 11:38:33};
- ご回答ありがとうございました。換算するのはめんどくさいので、素直にpar(new=TRUE) を使うことにします。 -- [[TGI]] &new{2015-04-06 (月) 13:17:15};
- leafletでのコロプレス図とマーカーについて(2) -- [[TAKA?]] &new{2016-10-24 (月) 00:29:34};

#comment

**dataframeの一行削除について [#o77ee9f1]
>[[help]] (2015-04-05 (日) 10:17:32)~
~
初歩的な質問で申し訳ありません.~
~
例えば,irisであれば,iris[,-1]とすれば,一列目が削除されたデータフレームができます.~
これは行につても使えると,どこかで書いたあった記憶があるので,iris[-1,]としても1行目が消えません.そこで,例えば,miris=as.matrix(iris)とやってからmirisに同じことをやると一行目が消えます.dataframeには[-1,]の手法が使えないのでしょうか.~

//
- 大変お騒がせしました.一行消えていました.indexがデータ行数だと勘違いしました.申し訳ありません. -- [[help]] &new{2015-04-05 (日) 11:42:43};

#comment

**beeswarm()について [#ef4495db]
>[[8]] (2015-04-03 (金) 09:16:24)~
~
お世話になります。beeswarm()を使用しているのですが、以下のようにサンプル数に応じて出力する画像ファイルを大きくすると、グラフ枠から最初と最後のサンプルまでの横軸方向のスペースが大きくなってしまいます。
 library(beeswarm)
 
 pdf(file="iris.pdf",width=5,height=7)
 beeswarm(Sepal.Length~Species, iris)
 dev.off()
 
 iris2 <- rbind(iris,iris,iris,iris,iris)
 iris2[5] <- rep(c(letters,LETTERS),100)[1:nrow(iris2)]
 pdf(file="iris2.pdf",width=35,height=7)
 beeswarm(Sepal.Length~Species, iris2)
 dev.off()
&ref(サンプル.png);~
このスペースを小さくするにはどうしたらよいでしょうか。環境はR 3.1.2のwindows 7です。~
宜しくお願いします。~

//
- 例えば、glim = c(2,52)をbeeswarm()に追加するとどうなりますか? --  &new{2015-04-03 (金) 10:49:33};
- ありがとうございます。c(2,52)ではグラフ右端にスペースが残りましたが、c(2,51)とすることで希望するグラフになりました。c(2,クラス数-1)にするとよさそうです。 -- [[8]] &new{2015-04-03 (金) 11:37:24};
- ヘルプファイルを読んだのですが、"dlim and glim can be used to specify limits of the axes instead of xlim or ylim"とあります。x軸の調整はdlimのはずなのに、glimでこのような挙動をするのはなぜでしょうか。 -- [[8]] &new{2015-04-03 (金) 17:04:33};
- beeswarm:::beeswarm.default でソースを読めば解決するでしょう。horizontal か vertical かで,割り当てが変わります。vertical のときは,glim が xlim に対応するからです。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-04-03 (金) 17:15:39};
    if (horizontal) {
        if (is.null(ylim)) 
            ylim <- glim
        if (is.null(xlim)) {
            xlim <- dlim
        }
        略
    }
    else { # vertical
        if (is.null(xlim)) 
            xlim <- glim
        if (is.null(ylim)) {
            ylim <- dlim
        }
        略
    }
- なるほど。少し不親切なヘルプファイルですね。ありがとうございました。 -- [[8]] &new{2015-04-03 (金) 19:48:22};
- http://www.cbs.dtu.dk/~eklund/beeswarm/ にコメントの送り先が明記されていますから、ヘルプファイルの修正を提案されてはいかがでしょうか --  &new{2015-04-05 (日) 13:59:52};

#comment

**カイ二乗値がとても大きい時のpchisq() [#j29cbe92]
>[[NNDDMMCC]] (2015-03-31 (火) 19:35:51)~
~
お世話になります。~
カイ二乗値がとても大きい時に「1-pchisq」を計算すると,0と表示されてしまいますが,それを1.0e-20といったように,表示する方法はありますでしょうか?具体的には,
 > 1-pchisq(70,1)
 [1] 1.110223e-16 #1.0e-16まではしっかりと表示されますが
 > 1-pchisq(71,1)
 [1] 0 #それより小さくなるとすべて0になってしまうようです。
といったことを解消したいのですが,どうぞよろしくお願いいたします。
~

//
- この種の悪例は,統計手法や R の解説を名乗っている Web ページでもよく見られます(嘆かわしいことです)。&br;「丸め誤差」のせいなのですが,真の解決策を見いだすのは,オンラインヘルプを良く読むこと。p* 関数には lower.tail という引数があります。&br;1-pchisq(...) ではなく,pchisq(..., lower.tail=FALSE) を使うべきなのです。
 > 1-pchisq(70, 1) # 「しっかりと表示されますが」とはいうものの,正確な値ではないのです。
 [1] 1.110223e-16
 > pchisq(70, 1, lower.tail=FALSE) # このようにすれば,正確な値が表示されます。
 [1] 5.930446e-17
 > 1-pchisq(71, 1)
 [1] 0
 > pchisq(71, 1, lower.tail=FALSE) # このような場合についても同じです。
 [1] 3.572249e-17
もっとも,検定に対して用いる場合は,P 値はせいぜい小数点以下 3 桁までで十分なので,*e-8 だろうと,*e-11 だろうと,問題はないのですけどね。&br;しかし,正しいものは正しい,間違っているものは間違っている。ちゃんとした結果を表示するすべは知っておくべし。&br;pchisq.test などのソースを見ると,p-value を計算するときには,かならず pchisq(..., lower.tail=FALSE) としているのが確認出来るでしょう。-- [[河童の屁は,河童にあらず,屁である。]] &new{2015-03-31 (火) 20:41:07};
- 大変勉強になりました。どうもありがとうございました。 -- [[NNDDMMCC]] &new{2015-03-31 (火) 21:28:46};

#comment

**ネット上のデータを大量にRに取り込む方法 [#x992e8c3]
>[[たかし]] (2015-03-29 (日) 13:44:17)~
~
以下のURLは今月の3月4日に行われた競輪のレースの出走表です。 ~
http://keirin-station.com/keirindb/race/member/36/20150304/1/~
この出走表から個々の選手の競争得点の標本分散を計算します。~
次に以下のURLはその結果です。~
http://keirin-station.com/keirindb/race/result/36/20150304/1/~
ここから3連単の配当金をとってきます。~
見たい関係は競争得点の標本分散と3連単の配当金なのですが、この2つの数の組を同様に違うレースから約300レースとってきたいのですが、これらはこのホームページの出走表にいちいちアクセスしてとってくるしか方法がないのでしょうか?何か効率的なやり方はありますか?

//
- 300回もページを参照されるのは(失敗なんかあったら更に同じページを何回も)サーバーとしては「なんだかなあ」ということにもなるかも。関連ページを一括ダウンロードして,アクセスはダウンロードを保存した自分のパソコンという風にすれば,お互いハッピーなんじゃないかな? -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-03-29 (日) 14:14:33};

#comment

**lapply()の返り値について [#ye3028fe]
>[[XXX]] (2015-03-27 (金) 18:10:29)~
~
お世話になります。lapply()に自作の関数を渡して処理をする際に、返り値が画面に表示されないようにしたいのですが、invisible()が機能しないようです。
 mysum <- function(x) {
 	invisible(a <- sum(x))
 }
 
 x <- 1:5
 mysum(x) # 返り値は表示されない
 
 x <- c(list(1:5), list(2:6))
 lapply(x, mysum) # 返り値が表示されてしまう
どのようにすればよいでしょうか。~
宜しくお願いします。~

//
- 本来,invisible を使うのは,関数単独で引用されたときの出力を防ぐだけで,返されるオブジェクトを後で利用するためには,変数に代入するようにプログラムされる。その意味では invisible であろうと return であろうと変わりはない。関数の結果を暗黙的に表示もしないし変数にも代入しないというのは意味不明である。&br;では,invisible は何のためにあるか。それは,不用意に関数をむき出しで引用して,たくさんの訳のわからない(?)数値の出力の嵐に見舞われるより,何にも出力せずにおいて,「ああ,代入してからその後で別の関数に引き渡さないととダメなんだなあ」とプログラマに反省を促す意味があるんだろうかなぁ。&br;プログラムには他にもいろいろ改良点があるが。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-03-27 (金) 20:48:18};
 mysum <- function(x) {
 	invisible(sum(x)) # 代入してから返す必要はない
 }
 
 x <- 1:5
 mysum(x) # 返り値は表示されない
 
 x <- list(1:5, 2:6)   # データ構造としてはこちらが自然(ベクトルを要素として持つリスト)
 y <- sapply(x, mysum) # この場合は sapply がよいだろう。
                       # 結果を何かに代入してやればよいだけ(そういう意味では invisible ではなく return で十分)
                       # そもそも,代入もしない,出力もしないというのでは,何のための関数?
                       # 回避策があるなら,不本意でもそれを使う
 y # 必要なときに表示すればよいだけ(不要なら表示しないだけ)
- ありがとうございました。代入すればよいだけだったのですね。サンプルコードを簡潔にしすぎて変な質問になっていました。実際には関数内で代入します。 -- [[XXX]] &new{2015-03-28 (土) 01:28:07};

#comment

**日本語が急に文字化けするようになりました [#k156078a]
>[[月野]] (2015-03-25 (水) 14:45:04)~
~
初めて投稿させていただきます。win7 64bitで、R3.1.2を使用していたところ、先日突然、コンソールのメッセージが全て英語になり、日本語を入力しても文字化けするようになってしまいました。これまで対応として試みたのは~
~
・Rconsole 内の のlanguage = ja_JP.UTF-8 に上書き~
・Sys.setenv での変更
 > Sys.setenv(LANG = "fr")
 > x
 Erreur : objet 'x' introuvable
 > Sys.setenv(LANG = "ja_JP.UTF-8")
 > x
 Error: object 'x' not found
 > Sys.setenv(LANG = "en")
 > x
 Error: object 'x' not found
になります。R3.1.3をインストールしても同じ症状が継続して出ています。対処方法を御教示いただけますでしょうか。よろしくお願いします。~

//
- 「コンソールのメッセージが全て英語になり」というのと「日本語を入れても文字化け」というのは同じ原因かなぁ。前者については,R コンソールのメニューバーの Edit --> GUI preferences... で出てくる設定ウインドウの Language for menus and messages の欄に何か入っていませんか? en だと英語,fr だとフランス語,ja または空白だと日本語になるようですが。&br;設定後,Save... して一度 R を終了後,再度 R を立ち上げてみてください。&br;私の環境では,原因と対策は上のようなことかなと... -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-03-25 (水) 15:32:33};
- 河童の屁は,河童にあらず,屁である。さま ありがとうございます。設定ウィンドウの該当箇所は空欄です。そこに ja_JP.UTF-8 と 入力してsaveし、Rconsole ファイルを上書き。Rの再立ち上げをしても症状は変わらずです。 -- [[月野]] &new{2015-03-25 (水) 15:45:00};
- そうですか。その欄に fr と書いても,メッセージはフランス語で出るけど,日本語は変数名などでも使えますから,別の原因なんでしょうね。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-03-25 (水) 15:49:33};
- ありがとうございます。素人ながら3.1.3をインストールしても症状が継承されることから、どこか大元の設定が変わってしまったような気がしています。日本語の列名の書かれたファイルを使わざるを得ないので困り果てています。。 -- [[月野]] &new{2015-03-25 (水) 15:58:13};
- そもそもWindowsなのに、ja_JP.CP932じゃなくてja_JP.UTF-8を設定しているのは、何か特別の理由があるのでしょうか。&br;とりあえず、まだ試していないのなら下記を試してみて。 --  &new{2015-03-25 (水) 18:26:56};
 > Sys.setlocale(locale="Japanese")
- ありがとうございます。UTF-8を指定したのは特別な理由はないです。webで調べた例がUnixの例でしたがそのまま真似したまででした。また、文字コードについての理解が足りないようで申し訳ございません。取り急ぎ以下をやってみました。御助言よろしくお願い致します。 -- [[月野]] &new{2015-03-26 (木) 10:21:36};
 # 実行結果などをどのように記述するかは,他の投稿記事をみるとか,投稿書式についての説明を読むとかしてほしいものです
 > Sys.setlocale(locale="Japanese")
 [1] "LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;
      LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932" 
 > Sys.setenv(LANG = "Japanese_Japan.932") 
 > x  Error: object 'x' not found
- 「object 'x' not found」の意味は「xという名前のRオブジェクトは存在しない」という意味です。文字化けとか日本語に全く関係がありません。どのようなローケルで設定してあったとしても、''ないものはない''のです。そこがトラブルシューティングの出発点だと思いますよ。 --  &new{2015-03-26 (木) 15:21:45};
- ↑ そうじゃなくて,「日本語でのエラーメッセージじゃなく英語のエラーメッセージが出るようになった」って言っているのよ --  &new{2015-03-26 (木) 15:47:32};
- メッセージの問題への対処だけでは本質な解決につながらないと思うが、メッセージの設定はLC_MESSAGESだよ。Sys.getenv()で確認してみて。それから、--vanillaをつけてRを起動するとどうなりますか? --  &new{2015-03-26 (木) 16:45:10};
- ありがとうございます。Sys.getenv()を見てみましたが、Rに直接関係しそうなのは  > "R_ARCH","/x64"  > "R_HOME","C:/PROGRA~1/R/R-31~1.2"  > "R_LIBS_USER","C:\Users\moon\Documents/R/win-library/3.1"  > "R_USER","C:\Users\moon\Documents"  のみでした(全体は60行程度あるので省略しました。必要であればご指示ください)。LC_MESSAGES やMESSAGESに該当する記述は見当たりませんでした。また、cmdで、Rgui.exe および R.exe を ---vanillaをつけて起動してみましたが、英語のスタート画面がでるだけでした。御助言よろしくお願い致します。 -- [[月野]] &new{2015-03-27 (金) 14:46:53};
- えっと、
 1.「コントロール パネル\時計、言語、および地域」の「管理」タブ内の「Unicode対応ではないプログラムの言語」が「日本語(日本)」になってるか確認.
 2.「C:\Program Files\R\R-3.1.3\etc\Rconsole」の中のlanguage = が無指定(ブランク)か確認.
 3. ご自分の「C:\Users\<ユーザー名>\Documents\Rconsole」の中のlanguage = が無指定(ブランク)か確認.
 4. 上記が問題なければ普通にRを起動して、sessionInfo()の結果をはりつける.
  > sessionInfo()
 5. cmdを実行して環境変数の一覧を取得してはりつける.
 C:\xxxx> set > env.txt
そんなもんかぁ -- [[なかま]] &new{2015-03-27 (金) 16:09:40};
- なかま さま ありがとうございます。1は問題ありませんでしたが、「形式」タブ内の「形式」が、英語になっていたところを、「日本語(日本)」に変更したところ、症状が解消しました。ありがとうございました。 -- [[月野]] &new{2015-03-27 (金) 19:18:38};

#comment

**重回帰(lm)でのpredictの使い方について [#u52508dc]
>[[NwFc]] (2015-03-22 (日) 20:48:16)~
~
初めて投稿させて頂きます.ルールが余りわからず失礼があればお許しください. ← プログラム等をどうやって入力するか,ソースを見るべし~
~
Rで重回帰をしようとして,予測のところで躓いています.初歩的な理解不足と思いますが,どなたか,私が何を勘違いしているかを御教え頂けると嬉しいです.~
やりたいことはデータを与えてlmで重回帰式求め,新しいデータでyを予測するというものです.単回帰の場合はうまくいくのですが,説明変数xを二つにすると,predictで素直に計算してくれず,元データの行数と合わないなとど,警告がでます.xの一組のペア(50,50)でyを予測してほしいだけなのですが.~
 predictは重回帰では使えず,係数を求めて自分でベクトル演算するしかないのでしょうか? どなたか助けてください.
 > x1 <- c(30, 20, 60, 80, 40, 50, 60, 30, 70, 60)
 > x2 <- c(30, 50, 60, 80, 40, 30, 60, 30, 40, 60)
 > x <- cbind(x1, x2)
 > a <- as.matrix(c(2, 5))
 > y <- x %*% a
 > 
 > z <- lm(y ~ x)
 > new <- data.frame(x1 = 50, x2 = 50)
 > predict(z, new)
   1   2   3   4   5   6   7   8   9  10 
 210 290 420 560 280 250 420 210 340 420 
 Warning message:
 'newdata' had 1 row but variables found have 10 rows

//
- そもそもモデル式が間違っているのでは? --  &new{2015-03-23 (月) 03:54:16};
 > z <- lm(y ~ x1 + x2)
 > new <- data.frame(x1 = 50, x2 = 50)
 > predict(z, new)
   1 
 350 
なお、yは次のように作成すると1行ですむ。y, x1, x2だけあればy ~ x1 + x2の回帰分析ができるので、xは不要。
 > y <- 2 * x1 + 5 * x2
- 早速、ご回答を頂き有難う御座います。 -- [[NwFc]] &new{2015-03-24 (火) 11:43:20};

#comment

**リストの要素の削除について [#i1252d9c]
>[[Lee]] (2015-03-17 (火) 20:05:19)~
~
たびたびすみません。再び質問させて頂きます。 # 「すいません」などという日本語はありません~
複数の文字列を要素にもつリストxから、文字列ベクトルyの要素を削除して、リストzを作りたいと考えています。
 (x <- list(c("Aaa","Abb","Acc"), c("Baa","Bcc","Bds","Bas"), c("dsfa","fgsd","gtsd","frgh")))
 y <- c("Acc", "fgsd")
 (z <- list(c("Aaa","Abb"), c("Baa","Bcc","Bds","Bas"), c("dsfa","gtsd","frgh")))
どのような処理をすれば可能でしょうか。使えそうな関数でもよいので教えて頂けませんか。~
宜しくお願いします。~

//
- これも,基本的な関数の組み合わせで実現できます。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-03-17 (火) 21:49:16};
 > z # このような結果が欲しいのですね
 [[1]]
 [1] "Aaa" "Abb"
 
 [[2]]
 [1] "Baa" "Bcc" "Bds" "Bas"
 
 [[3]]
 [1] "dsfa" "gtsd" "frgh"
 
 > lapply(x, function(a) a[!(a %in% y)]) # プログラムは,この一行で十分 ! の後に( )を余分につけた
 [[1]]
 [1] "Aaa" "Abb"
 
 [[2]]
 [1] "Baa" "Bcc" "Bds" "Bas"
 
 [[3]]
 [1] "dsfa" "gtsd" "frgh"
- ありがとうござました。apply系の関数に自作の関数を組み合わせる使い方に慣れていないので勉強になりました。
私の目的とは異なりますが、もし文字ベクトルyがy <- c("Ac", "fgs")であり、yを部分文字列にもつxの要素を除去し、同様のzを得る場合はどのようにすべきでしょうか。lapplyとgrepを組み合わせればできるような気がするのですが、後学のために教えて頂けませんか。 -- [[Lee]] &new{2015-03-18 (水) 08:26:30};
- lapply(x, function(a) a[! apply(sapply(y, function(b) grepl(b, a)), 1, any)]) ですかね。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-03-18 (水) 11:27:17};
- ありがとうございました。挙動を確認し、ようやく理解できました。apply系の関数を組み合わせれば、複雑な処理でも1行で済むのですね。 -- [[Lee]] &new{2015-03-18 (水) 14:04:20};

#comment

**リストの要素の結合について [#pdf48a8d]
>[[Lee]] (2015-03-16 (月) 15:47:44)~
~
お世話になります。~
~
以下のような2×3の行列を要素にもつリストがあり、rbindで6×3の行列にします。~
 list_dat <- list(matrix(1:6, nrow=2, ncol=3),matrix(7:12, nrow=2, ncol=3),matrix(13:18, nrow=2, ncol=3))
 rbind(list_dat[[1]],list_dat[[2]],list_dat[[3]])
~
本当のデータはもっとたくさんの要素を持つので、この処理をlapply()やsapply()で実行しようとしたのですが結合した行列が作れません。どのようにすればよいでしょうか。~
~
よろしくお願いします。~

//
- Reduce()はどうですか? --  &new{2015-03-16 (月) 17:26:02};
 > Reduce(rbind, list_dat)
      [,1] [,2] [,3]
 [1,]    1    3    5
 [2,]    2    4    6
 [3,]    7    9   11
 [4,]    8   10   12
 [5,]   13   15   17
 [6,]   14   16   18
- 見たことも聞いたこともない関数を使わなくても,基本的な機能を使いこなして目的を達するのが真の R 使いかも。以下のプログラムは,NULL を初期値として持つオブジェクトに,リストの中の行列オブジェクトを次々に rbind していくというものです。ノートに手書きでいくつかの行列をまとめた結果を書く手順と全く同じでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-03-16 (月) 17:52:29};
 > result = NULL
 > for (i in list_dat) {
 +   result <- rbind(result, i)
 + }
 > result
      [,1] [,2] [,3]
 [1,]    1    3    5
 [2,]    2    4    6
 [3,]    7    9   11
 [4,]    8   10   12
 [5,]   13   15   17
 [6,]   14   16   18
- Reduce()を薦めた者ですけど、baseパッケージの中の基本関数を「見たことも聞いたこともない」とは、あんまりです >  河童さん --  &new{2015-03-16 (月) 18:35:15};
- ありがとうございました。Reduce()は初めて知りました。調べたところ、do.call()でも同様の処理ができるのですね。確かにfor文を使えばできるのですが、こちらのwikiではfor文ではなくapply系の関数で処理するほうが推奨されているように思えたので質問しました。 -- [[Lee]] &new{2015-03-16 (月) 18:42:52};
- 「見たことも聞いたこともない」のは,私ではありません。&br;質問して,解答をもらえるまでの時間と,for 文でシコシコ回す簡単なプログラムの計算時間とどちらが速いでしょうか。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-03-16 (月) 18:53:26};

#comment

**検定ベクトル処理のためのチェイン構文+doの仕様方法について [#m0512c49]
>[[コバヤシカズオ]] (2015-03-12 (木) 16:33:43)~
~
お世話になります。グループ毎にoneway.testを実行したく,下記例を~
インターネットで見つけました。~
 data %>% group_by(AAA,BBB) %>% do(hensu=lm(Y~X,data=.))~
真似をして,下記で実行したところエラーとなりました。~
 data %>% group_by(CCC) %>% do(oneway=oneway.test(YY~XX,deta=.))~
 Error in oneway.test(YY~XX, data= .SD) : not enough groups
CCCの中に複数のカテゴリー(文字)は確認しました。~
基本的な使用方法の間違いでしょうか。ご指導戴けると幸いです。R3.1.2 Windows8~

//
- 申し訳ありません。doの使用方法について でした。 -- [[コバヤシカズオ]] &new{2015-03-12 (木) 16:36:12};
- 私は、この妙なやりかたはまったく知らないのだけど、エラーメッセージの意味は、Xに問題があると言っているのだと思います。&br;辛口ではありますが,本質を知らずまねだけしても,まねにもならないと思います。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-03-13 (金) 01:28:52};
- %>% や, group_by や,do は標準関数ではありませんので(便利なのでいま流行っていますが),ちゃんと書いてください.dplyrとmagrittr パッケージがあることが前提ですよね.それで,not enough groups はoneway.testが出しているメッセージで,一元配置分散分析はグループごとに平均値に差があるという帰無仮説を検定するものですが,グループの数が足りないという意味です.group_byを通しているので,CCCごとに層別してできた層のうちのどれかに,XXが1種類しか含まれない層ができてしまったのだろうと思います. data %>% group_by(CCC) %>% summarise(n_distinct(XX)) のように,各CCC層のXXが2以上あるかどうかを確認すべきでしょうね --  &new{2015-03-13 (金) 23:48:17};
- 皆様 返信が遅く大変申し訳ありません。全グループが2水準以上であることが必要と思い至りませんでした。読み込みパッケージ未記載についても申し訳ありません。助言戴きありがとうございます。 -- [[コバヤシカズオ]] &new{2015-03-17 (火) 09:55:24};

#comment

**データフレームからベクトルへの変換 [#qcaa874f]
>[[FK]] (2015-03-12 (木) 09:49:07)~
~
お世話になります。以下のようなデータフレームxの要素をひとつのベクトルに変換したいのですが、何かよい方法はないでしょうか。要素の順番はどうでも構いません。as.vector()ではできませんでした。~
~
宜しくお願いします。
 sex <- c("F","F","M","M","M")
 height <- c(158,162,177,173,166)
 weight <- c(51,55,72,57,64)
 ( x <- data.frame(SEX=sex, HEIGHT=height, WEIGHT=weight) )

//
- unlist(x)は試してみましたか -- [[竹澤]] &new{2015-03-12 (木) 10:34:49};
- unlist(x)をすると"F", "M"が"1","2"に変換されてしまいました。 -- [[FK]] &new{2015-03-12 (木) 10:41:26};
- 意図を掴みにくいですが、因子型のFやMが1や2になっては困るということは、全ての文字列でという要望ですね。 --  &new{2015-03-12 (木) 10:58:48};
 > x$SEX <- as.character(x$SEX)
 > unlist(x)
    SEX1    SEX2    SEX3    SEX4    SEX5 HEIGHT1 HEIGHT2 HEIGHT3 HEIGHT4 HEIGHT5 
     "F"     "F"     "M"     "M"     "M"   "158"   "162"   "177"   "173"   "166" 
 WEIGHT1 WEIGHT2 WEIGHT3 WEIGHT4 WEIGHT5 
   "51"    "55"    "72"    "57"    "64" 
名前付きベクトルが嫌であればunname()を使えばいいです
 > unname(unlist(x))
  [1] "F"   "F"   "M"   "M"   "M"   "158" "162" "177" "173" "166" "51"  "55" 
 [13] "72"  "57"  "64"
- 希望する処理ができました。ありがとうございました。 -- [[FK]] &new{2015-03-12 (木) 13:05:41};

#comment

**decompose関数について [#a4459c5d]
>[[okh]] (2015-03-10 (火) 11:28:18)~
~
統計数理研究所のDecompとRのdecompose関数は同じ計算法なんでしょうか?最近出版された「楽しいR」という本の59ページを読んでいて気になったのですが。どなたか知ってますでしょうか。~

//

#comment

**「Wiki内のGoogle検索について」など2件 [#y24ea5b9]
>[[Montecarlo]] (2015-03-08 (日) 22:56:02)~
~
いつもお世話になっております。~
~
質問が2件ありますので、お答えいただけたら幸いです。~
~
・Wiki内検索について~
本Wiki内の検索を一番下のGoogle検索窓からWiki内を検索しましたが~
いくつか「有効なWikiNameではありません」と表示されて、検索がうまくいっていないようです。~
この解決策をご存知の方がいらっしゃいましたら、教えていただけたらと思います。~
~
・画像の添付について~
トップページには以下のように書かれていました。~
> 各ページへのファイル添付については、ページ上部の「ファイル添付」より、画像ファイルのみユーザー認証なしで可能としてあります。その他のファイルの添付はユーザー認証することで可能です。~
しかしながら、添付しようとすると「管理者パスワードが一致しません。」と出てしまい、添付ができませんでした。~
添付の具体的な方法を教えていただけたらと思います。~
~
よろしくお願いいたします。~

//
- 検索は,ページ上部の「単語検索」でやるとよいでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-03-08 (日) 23:32:43};
- Googleの検索が失敗する理由は、ごく最近このWikiシステムの文字コードをeuc-jpからutf-8に変更したためです(違ったら訂正して下さい[[岡田]]先生)。そのため、Googleのデータベース内の古いURLが空振りになっており、徐々に新しいURLに置き換わってくると思います。Google内の更新速度がどの程度か知らないですが。解決策は河童さんの助言通りです。画像以外のファイルの添付は、自分のサイトに当該ファイルを置いて、そのURLを書き込まれるのも、1つの解決策だと思います。 --  &new{2015-03-09 (月) 12:50:08};
- Google検索が失敗する理由はおそらくご指摘の通りだと思っており、時間がたつと解決することを期待しています。画像添付は許可するよう修正が必要ですね。しばらくお待ちください。 -- [[岡田]] &new{2015-03-09 (月) 17:43:19};
- 添付ファイルを管理者パスワードなしで許可するように設定変更しました。 -- [[岡田]] &new{2015-03-10 (火) 12:28:13};
- 返信遅くなってしまい、申し訳ありませんでした。~
そして、返信いただきありがとうございました。~
Google検索はしばらく時間がかかるようなので、「単語検索」で行いたいと思います。
画像添付は機会を得たら、その時に添付したいと思います。 -- [[Montecarlo]] &new{2015-03-10 (火) 23:00:03};

#comment

**meta packageでのp値の桁数 [#m33ab514]
>[[NNDDMMCC]] (2015-03-04 (水) 14:15:42)~
~
お世話になります。~
R version 3.1.1 (2014-07-10)~
Platform: x86_64-w64-mingw32/x64 (64-bit)~
OS:windouws 7~
でメタ解析をmeta packageを用いて行っております。~
そのなかで,metabinを用いて以下のようなプログラムを実行しました。
 X <- matrix(c(1282, 1890, 1368, 2426, 1749, 2606, 1462, 2536), 2, 4, byrow=TRUE)
 res <- metabin(X[,1], X[,2], X[,3], X[,4], sm="OR", comb.fixed=TRUE)
 res$pval.fixed
としてfixed effect modelのp値を表示しようとしたのですですが,数字が小さすぎて"0"と表示されてしまいます。~
とても小さい値(おそらく1.0E-16以下だと思います)を表示するにはどうすればよろしいでしょうか。~
どうぞよろしくお願いいたします。



//
- 変数の内容を 2 進数表記するとどのようになるかを確認してみるには,以下のようにすればよいでしょう。
 > sprintf("%A", res$pval.fixed)
 [1] "0X0P+0"
 > sprintf("%A", 0)
 [1] "0X0P+0"
なので,これは正真正銘の 0 ですね。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-03-04 (水) 14:42:34};
- ご回答ありがとうございます。sprintf関数,勉強になりました。ありがとうございました。 -- [[NNDDMMCC]] &new{2015-03-04 (水) 19:51:26};

#comment

**自分で定義した関数中でstepが使えない [#hd7e789d]
>[[HA]] (2015-02-28 (土) 21:57:05)~
~
お世話になります。~
Rを始めて3ヶ月、プログラミングはRが初めて、という者です。~
環境は ~
R version 3.1.2 (2014-10-31)~
Platform: x86_64-w64-mingw32/x64 (64-bit)~
OS:Windows 7 professional~
です。~
アンケートの分析で、ロジット(将来的にはプロビットも)分析を行い、step関数のステップワイズ法で変数選択をしようとしています。~
目的変数にあたる項目が複数あり、将来的に似たような分析をすることなどから、一連の操作を一つの関数にまとめておきたいと考えました。~
そして以下のような関数を作りました(エラーに関係しない部分は省いております)
 y = runif(100) > 0.3  #テストデータ
 x1 = runif(100)
 x2 = runif(100)
 x3 = runif(100)
 x4 = runif(100)
 t.d = data.frame(y,x1,x2,x3,x4)
 obj = y~.
 null = y~ 1
 
 t.func = function(obj, null, family = binomial,  #関数本体
                  data, direction = "both"){
  on.exit(sink())
  sink("test.txt")
  rg1 = glm(obj,family ,data)
  rg2 = glm(null,family ,data)
  step(rg1, scope = list(upper = rg1, lower = rg2), 
       direction = direction)
 }
 t.func(obj, null,data = t.d)
これを実行すると、
 「Error in UseMethod("family") : 
   no applicable method for 'family' applied to an object of class "NULL"」
というエラーメッセージが出て、停止してしまいます。~
1行ずつreturnで結果を返していったところ、stepの部分でエラーが出ているようなのですが、familyはstepの引数に含まれていないので、どうすればいいのか見当がつきません。~
directionを"backward"にすれば動くのですが、できればステップワイズ法(direction = "both")でも結果を得たいと考えています。~
本サイトでは、glmで検索した結果と「Rの関数定義の基本」については目を通しましたが、解決に繋がると理解できるものはありませんでした。~
(「Rの関数定義の基本」の「引数として関数オブジェクトを与える場合」は関連するかと思ったのですが、理解できませんでした)~
どうかご助言よろしくお願いいたします。~

//
- 誰の回答もないのでコメントだけ。質問のエラーは再現します。step()の箇所は、関数の中ではなく、外だと正常に動作するのでnamespaceがらみのstep()のバグ(と言うか関数内で使用されるケースを十分に検証していない)である気がします。MASSパッケージのstepAIC()に代えても同じですね。 --  &new{2015-03-03 (火) 10:09:56};
- コメントありがとうございます。namespaceというのは初見でして、初心者には荷が重そうです。。簡単に直せないということが分かっただけでも収穫でした。他の方法を考えてみます。 -- [[HA]] &new{2015-03-03 (火) 20:46:55};
- 関数の作り方に難がある(ちょっと癖がある)ので,以下のような関数仕様にすると動くと思います。もっとも,最終結果しか書かれないですけど。~
もっとも,こんな簡単な関数になるなら,わざわざ関数にする必要はなく,その都度 step を直接呼ぶだけでよいので,何の問題も生じないのだが?? -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-03-03 (火) 21:42:17};
 set.seed(20206)
 n = 40
 y = runif(n) > 0.3  #テストデータ
 x1 = rnorm(n)
 x2 = rnorm(n)
 x3 = rnorm(n)
 x4 = rnorm(n)
 t.d = data.frame(y, x1, x2, x3, x4)
 
 t.func = function(y, x, family = binomial, direction = "both") {
   on.exit(sink())
   sink("test.txt")
   rg1 = glm(y ~ x, family)
   step(rg1, direction = direction) # モデルの範囲を指定する必要はないと思われるので
 }
 
 t.func(t.d[,1], as.matrix(t.d[2:5])) # 第1引数は従属変数ベクトル,第2引数は独立変数行列,第3以降はf amily, direction を指定できる
- 河童の屁は,河童にあらず,屁であるさん。回答ありがとうございます。~
~
まず報告ですが、残念ながらお示し頂いた方法だと、xの部分がまとめて一つの変数(?)として扱われていて、最後の結果だけが示されているというよりも、全ての変数を利用したモデルと定数項のみのモデルだけで比較しているようです(x1だけを選択するのが最適な人工データで実験済み。出力結果を見てもxの自由度が4になっています)。~
~
ちなみに質問に際して他に省いた部分はファイルの名前の管理に関する部分でした。~
1.複数の目的変数があり、合成変数も作っていたり、地域毎に見たいなどの理由で、~
分析したいデータセットの種類が結構あり(今のところ30位を計画)、~
2.ステップワイズは定数項だけのモデルから始める場合と全変数を使うモデルから始める場合の両方を比べたかった(オプションで選べるようにして出力ファイル名にも反映)~
3.ロジットの結果をベースにしつつ余裕があればプロビットの結果とも比較したいと考えていた(これもファイル名でロジットとプロビットの区別)~
~
といった理由で処理と一緒に関数化したかったのですが、プログラミングの定石としては悪手でしょうか。重ねて質問ですいません。~
~
とりあえず、今はsourceで呼び出す形である程度処理をまとめようと考えています。-- [[HA]] &new{2015-03-03 (火) 23:05:05};
- 適切なテストデータがなかったので,十分吟味できておらず,失礼しました。また,sink の存在をうっかり見過ごしていたのも,お恥ずかしい。&br;さて,要するに formula の指定を引数に取るのが諸悪の根源(?)のようなので,従属変数と独立変数行列を引数で渡して,その後のことは,関数でやることにします。変数名はなんでもよい(例では従属変数名は yy です)。t.func の第1引数は 1 列のデータフレーム(例では (t.d[,1] では,ダメ!)。従属変数もデータフレーム。family を引数にするのはまた別の面倒を生じるので,binomial(link="***") の link を引数にする。実行結果中に binomial(link="probit") と明示したいなら,関数記述をちょっと工夫する。&br;step 関数において,モデルの範囲を指定する必要はないと思われるが,当初のプログラムにあわせて scope 引数を含めておく。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-03-04 (水) 09:06:54};
 # seed=sample(100000, 1)
 set.seed(9475)
 # print(seed)
 n = 40
 yy = runif(n) > 0.3  #テストデータ
 x1 = rnorm(n)
 x2 = rnorm(n)
 x3 = rnorm(n)
 x4 = rnorm(n)
 t.d = data.frame(yy, x1, x2, x3, x4)
 
 t.func = function(y, x, link=c("logit", "probit"), direction = "both") {
 #  on.exit(sink())
 #  sink("test.txt")
   link = match.arg(link)
   d = data.frame(y, x)
   formula1 = as.formula(sprintf("%s ~ .", colnames(d)[1]))
   rg1 = glm(formula1, family=binomial(link=link), data=d)
   formula2 = as.formula(sprintf("%s ~ 1", colnames(d)[1]))
   rg2 = glm(formula2, family=binomial(link=link),  data=d)
   step(rg1, scope = list(upper = rg1, lower = rg2) , direction = direction)
 }
 
 t.func(t.d[1], t.d[2:5]) # 第1引数は 1 列のデータフレーム(t.d[, 1]ではない),第2引数は独立変数のデータフレーム,第3以降は link, direction を指定できる
 t.func(t.d[1], t.d[2:5], link="probit", direction="backward")
実行例1
 >  t.func(t.d[1], t.d[2:5]) # 第1引数は...
 Start:  AIC=39.64
 yy ~ x1 + x2 + x3 + x4
 
        Df Deviance    AIC
 - x2    1   29.679 37.679
 <none>      29.636 39.636
 - x1    1   32.109 40.109
 - x4    1   35.722 43.722
 - x3    1   37.178 45.178
 
 Step:  AIC=37.68
 yy ~ x1 + x3 + x4
 
        Df Deviance    AIC
 <none>      29.679 37.679
 - x1    1   32.123 38.123
 + x2    1   29.636 39.636
 - x4    1   35.948 41.948
 - x3    1   37.239 43.239
 
 Call:  glm(formula = yy ~ x1 + x3 + x4, family = binomial(link = link), 
     data = d)
 
 Coefficients:
 (Intercept)           x1           x3           x4  
      2.1681       0.5991       1.3290      -1.4805  
 
 Degrees of Freedom: 39 Total (i.e. Null);  36 Residual
 Null Deviance:	    40.03 
 Residual Deviance: 29.68 	AIC: 37.68
実行例2
 >  t.func(t.d[1], t.d[2:5], link="probit", direction="backward")
 Start:  AIC=40.81
 yy ~ x1 + x2 + x3 + x4
 
        Df Deviance    AIC
 - x2    1   30.815 38.815
 - x1    1   32.370 40.370
 <none>      30.813 40.813
 - x4    1   36.481 44.481
 - x3    1   37.109 45.109
 
 Step:  AIC=38.81
 yy ~ x1 + x3 + x4
 
        Df Deviance    AIC
 - x1    1   32.392 38.392
 <none>      30.815 38.815
 - x4    1   36.583 42.583
 - x3    1   37.154 43.154
 
 Step:  AIC=38.39
 yy ~ x3 + x4
 
        Df Deviance    AIC
 <none>      32.392 38.392
 - x4    1   36.744 40.744
 - x3    1   37.532 41.532
 
 Call:  glm(formula = yy ~ x3 + x4, family = binomial(link = link), data = d)
 
 Coefficients:
 (Intercept)           x3           x4  
      1.1263       0.5115      -0.5909  
 
 Degrees of Freedom: 39 Total (i.e. Null);  37 Residual
 Null Deviance:	    40.03 
 Residual Deviance: 32.39 	AIC: 38.39
- 河童の屁は,河童にあらず,屁である。さん ありがとうございます!動作確認できました。後は自分でできそうです。formulaではなく変数名で管理すればよいのも使い勝手がよくなる気がします。 -- [[HA]] &new{2015-03-04 (水) 10:42:24};

#comment

**引数の確認について [#a1288ad2]
>[[Montecarlo]] (2015-02-22 (日) 23:37:30)~
~
いつもお世話になっております。~
今回引数の確認について質問をさせていただきます。~
~
関数の中で関数を定義し、その関数が調べることが可能かの疑問があります。~
具体的には以下の事象です。~
~
以下のプログラムを走らせると
 Dist.norm <- function(arg.m, arg.sd){
 	return(
 		list(
 			random = function(n) rnorm(n, arg.m, arg.sd)
 			, mean = arg.m
 			, density = function(x) dnorm(x, arg.m, arg.sd)
 		)
 	)
 }
 
 TestFunction <- Dist.norm(2, 3)
 TestFunction
 set.seed(0);TestFunction$random(3);set.seed(0);rnorm(3, 2, 3)
 TestFunction$density(0.3); dnorm(0.3, 2, 3)
このように返ってきます。
 > Dist.norm <- function(arg.m, arg.sd){
 + return(
 + list(
 + random = function(n) rnorm(n, arg.m, arg.sd)
 + , mean = arg.m
 + , density = function(x) dnorm(x, arg.m, arg.sd)
 + )
 + )
 + }
 > 
 > TestFunction <- Dist.norm(2, 3)
 > TestFunction
 $random
 function (n) 
 rnorm(n, arg.m, arg.sd)
 <environment: 0x00000000295e3d18>
 
 $mean
 [1] 2
 
 $density
 function (x) 
 dnorm(x, arg.m, arg.sd)
 <environment: 0x00000000295e3d18>
 
 > set.seed(0);TestFunction$random(3);set.seed(0);rnorm(3, 2, 3)
 [1] 5.788863 1.021300 5.989398
 [1] 5.788863 1.021300 5.989398
 > TestFunction$density(0.3); dnorm(0.3, 2, 3)
 [1] 0.1132558
 [1] 0.1132558
こちらが意図とした通り、乱数と平均および密度が求まっています。~
しかしながら、以下の状態では「arg.m」「arg.sd」へ何が入っているかわからない状態です。
 > TestFunction$random
 function(n) rnorm(n, arg.m, arg.sd)
 <environment: 0x00000000295e3d18>
この「arg.m」「arg.sd」を取得する方法はありますでしょうか。~
具体的には、上記の例で「arg.m = 2」「arg.sd = 3」を取得したいです。~
~
皆さんのお知恵を拝借できればと思います。~
どうぞよろしくお願いいたします。~

//
- > この「arg.m」「arg.sd」を取得する方法はありますでしょうか。&br;という意味がよくわからないのですが。arg.m, arg.sd は仮引数なので,実引数の値を取り出したい(実引数が何であったか知りたい)ということなんでしょうか?&br;Dist.norm の戻り値に mean = arg.m を指定しているので,TestFunction$mean とすれば 2 が得られているでしょう?&br;だったら mean = arg.m, sd = arg.sd としておけば TestFunction$sd とすれば 3 が得られるでしょう。&br;あるいは,
 density = function(x) c(dnorm(x, arg.m, arg.sd), arg.m, arg.sd)
というように定義しておけば,dnorm の戻り値と,arg.m, arg.sd の 3 つが戻りますけど?
 >  TestFunction$density(0.3)
 [1] 0.1132558 2.0000000 3.0000000
c ではなく list で返してやってもよいでしょう。
 density = function(x) list(density=dnorm(x, arg.m, arg.sd), arg.m=arg.m, arg.sd=arg.sd)
としておけば,
 >  TestFunction$density(0.3); dnorm(0.3, 2, 3)
 $density
 [1] 0.1132558
 
 $arg.m
 [1] 2
 
 $arg.sd
 [1] 3
お好きな方を。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-23 (月) 04:18:52};
- 「 河童の屁は,河童にあらず,屁である。」様~
早速の返信ありがとうございます。~
言われてみればその通りですね。~
~
返り値として指定してあげればよい話ですね。~
ありがとうございました。~
~ -- [[Montecarlo]] &new{2015-02-23 (月) 06:50:55};

#comment

**テーブル変形について [#q928e3f7]
>[[konoushi]] (2015-02-22 (日) 17:13:59)~
~
平素よりお世話になっております。~
下記のようなテーブルを以下のように変形したいのです。~
どのようにすればよいでしょうか。
 id  StartYear EndYear Variable
 01  2000       2002         a
 02   1995      1997         b
 
 id   Year     Variable
 01   2000       a
 01   2001       a
 01   2002       a
 02   1995       b
 02   1996       b
 03   1997       b   # 変なところに投稿しないように 投稿法も学習すること

//
- あれこれうまい方法を聞いたり,試したりするより,ださくても簡単で確かなプログラムを書くのが,結局は速いでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-22 (日) 18:55:03};
 d <- structure(list(id = c(1L, 2L, 30L),
   StartYear = c(2000L, 1995L, 2010L),
   EndYear = c(2002L, 1997L, 2015L),
   Variable = structure(1:3, .Label = c("a", "b", "c"), class = "factor")),
   .Names = c("id", "StartYear", "EndYear", "Variable"), class = "data.frame",
   row.names = c(NA, -3L))
 d
 n <- d$EndYear - d$StartYear + 1
 d2 <- NULL
 for (i in 1:nrow(d)) {
   d2 <- rbind(d2,
   cbind(rep(d[i,1], n[i]),
         seq(d[i, 2], d[i, 3], length=n[i]),
         rep(as.character(d[i,4]), n[i])))
 }
 d2 <- data.frame(d2)
 colnames(d2) <- c("id", "Year", "Variable")
 d2$id <- as.integer(as.character(d2$id))
 d2$Year <- as.integer(as.character(d2$Year))
 d2
実行結果
 > d
   id StartYear EndYear Variable
 1  1      2000    2002        a
 2  2      1995    1997        b
 3 30      2010    2015        c
 > d2
    id Year Variable
 1   1 2000        a
 2   1 2001        a
 3   1 2002        a
 4   2 1995        b
 5   2 1996        b
 6   2 1997        b
 7  30 2010        c
 8  30 2011        c
 9  30 2012        c
 10 30 2013        c
 11 30 2014        c
 12 30 2015        c

#comment



**要素を一回で抽出する事は可能でしょうか? [#qec460ff]
>[[risperidone]] (2015-02-20 (金) 10:20:50)~
~
お世話になります。例えば下記のようなデータがあったとします。~
1:ANA 2:JAL 3:ANA, JAL 4:JAL,ANA, DEL~
それぞれの構成要素をカウントすると、ANA 3, JAL 3, DEL 1となります。このように構成要素の数をRでカウントする手法があればご教授下さい。宜しくお願いします。~

//
- 1:ANA 2:JAL 3:ANA, JAL 4:JAL,ANA, DEL は1, 2, 3, 4 行目の内容ということですか? 「1:」,「2:」などは行の一部として入っているのですか?それとも,1:ANA 2:JAL 3:ANA, JAL 4:JAL,ANA, DEL 全体が 1 個の文字列なんですか?&br;集計対象のデータ構造がちゃんと記述されていないと,最適の方法を提案できないですね。-- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-20 (金) 10:24:54};
- ご返信ありがとうございます。「1:」,「2:」などは行の一部として入っていません。各セルには要素が単一の場合は要素のみ、複数の場合「ANA, JAL」などと要素とカンマのみが入力されています。 -- [[risperidone]] &new{2015-02-20 (金) 10:35:52};
- ファイルからどのようにして読み込んだのですか?つまり,対象は data.frame なのか,ベクトルなのか?
 ANA
 JAL
 ANA, JAL
 JAL,ANA, DEL
のようなファイル(test.dat)があって,それを readLines で読み込んだ場合ならば,
 x <- readLines("test.dat")
 table(unlist(strsplit(x, "[ ,]")))
によって,以下の結果を得るでしょう。
    ANA DEL JAL 
  2   3   1   3 
strsplit の split を "[ ,]" にしているのは,「要素とカンマのみ」とはいうものの,"ANA, JAL" のようにスペースも入っていることに対応しているのではあるけれど。まえもって gsub で,空白を削除しておく方がよさそう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-20 (金) 10:44:59};
- ご返信ありがとうございます。データ入力の仕方に改善の余地があると感じました。もしエクセルで各セルに「ANA」「DEL」など単一のデータのみが入力されていた場合、splitはどのようになりますか? -- [[risperidone]] &new{2015-02-20 (金) 10:50:04};
- > もしエクセルで各セルに「ANA」「DEL」など単一のデータのみが入力されていた場合&br;って,要するに 1 行に 1 つのデータということでしょう?読み込んだベクトルの各要素は ANA とか JAL になるわけだから,strsplit なんかいりません。table(x) だけでよいです。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-20 (金) 11:12:29};
- ありがとうございます。大変参考になりました。 -- [[risperidone]] &new{2015-02-20 (金) 11:19:48};

#comment

**SPSSから読み込んだデータの数値をNAに置き換えできません [#m59c7b95]
>[[Thomas]] (2015-02-20 (金) 00:28:36)~
~
はじめまして。Windows7SP1上でR 3.1.2 64bitを使っています。SPSS21から以下のようにデータを読み込み特定値(-99)をNAに置き換えたいのですが,「 (list) オブジェクトは 'double' に変換できません」というエラーが出てしまい置き換えができません。どうしたらよいのでしょうか?~
データ例(test.sav)
 V1 V2
 1 -99
 2 22
 3 23
 4 24
(なおここで-99はSPSS上ではユーザ欠損値にはなっておりません)~
 install.packages("memisc")
 library(memisc)
 data <- as.data.set(spss.system.file("test.sav"))
 dat[dat == -99] <- NA
 
 以下にエラー `[<-.data.frame`(`*tmp*`, i, j, value = NA) : 
   (list) オブジェクトは 'double' に変換できません。
dat$v2[dat$v2 == -99] <- NA と変数を明示的に指定するとエラーなく通るのですが,実際には沢山の変数があるので,できればいっきにまとめて置き換えたいのです。またいったんSPSSからcsvファイルに落としてread.csvで読むと dat[dat ==- 99] <- NA でも問題なく通るのですが,なぜかSPSSから直接読むとエラーになってしまい,なぜそのようなことが発生するのか理解できなくなっております。~
どうかよろしくお願い申し上げます。~

//
- data.setオブジェクトはdata.frameとは別のものです.read.csvで返されるのはdata.frameオブジェクトなので,data.frameの機能として,dat==-99の結果がmatrix型として返されます.data.setオブジェクトにはそういう自動変換機能がないのでしょう.したがって,data.setオブジェクトをdata.frameオブジェクトに変換すれば,dat[dat==-99]<-NAも実行可能になるでしょう.~
なお,変換はas.data.frame関数を使うことで可能ですが,data.setオブジェクトのほうが持っている情報量が多いので,data.frameへの変換時にすべての情報が保持されることはないでしょう.一度カンマ区切りファイルに落として読み込むのと同じ状態になるということです. --  &new{2015-02-20 (金) 01:03:46};
- ありがとうございました。data.frameとは別物で読み込まれるのですか!理解しました。 -- [[Thomas]] &new{2015-02-20 (金) 07:54:24};
- Thomas さん,あなたは,「整形ルール」のページの一部を壊しましたね。困ります。直しておきましたけど。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-20 (金) 10:21:45};
- 申しわけありません。よくわからずひな形の欄を触ってしまいました。壊してしまったのですか。 -- [[Thomas]] &new{2015-02-20 (金) 10:27:43};
- 自分の書き込みを削除するときに,それ以外のかなりの行を削除してしまったようですよ。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-20 (金) 10:30:19};
- 編集の窓の中をいじると実際の表示に直接反映されてしまうのですね(投稿用のテンプレートと勘違いしておりました)。これから気をつけます。申しわけありませんでした。 -- [[Thomas]] &new{2015-02-20 (金) 10:37:45};
- 上記data.setを dan<-as.data.frame(dat) としてdata.frameに変換してみましたが,やはり,dan[dan==-99]でうまくできました。ありがとうございました。 -- [[Thomas]] &new{2015-02-20 (金) 10:43:56};

#comment

**各数値の間にカンマを自動挿入してエクセルのデータをRにコピペしたい [#b5c8111d]
>[[risperidone]] (2015-02-18 (水) 17:53:36)~
~
表題通りですが、エクセルデータ(csv)の数値をエクセル上でコピーして、
 x=c(3619, 7797, 5039, 1617, 8876, 2156, 1659, 504, 387, 2282, 2891, 1636, 518, 1066, 1061)
といった風に、数値の間にカンマを自動で入れるためのテクニックがあればご教授下さい。~
今までは手動でカンマの挿入をやっていました。~

//
- Excel でコピー,R コンソールで dput(scan("")) とすると,「1:」のようなプロンプトが出るので,R コンソールにペーストすると,c(1, 2, 3,...)  のように表示されるので,その部分をコピーして利用するというのはいかがですか? -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-18 (水) 18:16:28};
 > dput(scan(""))
 1: 1	2	3	4 << ペースト
 5:                         << リターンキーを押す
 Read 4 items
 c(1, 2, 3, 4)              << これをコピーして利用する
 > x <- c(1, 2, 3, 4)       << たとえば,こんなふうに
別解~
Mac の場合,次の様な関数を作っておく。
 p <- function() {
   con <- pipe("pbpaste", "r")
   txt <- scan(con)
   close(con)
   con <- pipe("pbcopy", "w")
   cat("c(", paste(txt, collapse=", "), ")", file=con, sep="")
   close(con)
 }
1. Excel でコピーする。~
2. R で p() を実行する ~
3. 変換された文字列がバッファーにあるので,必要なところでペーストする。~
Windows の場合は
 p <- function() cat("c(", paste(scan("clipboard"), collapse=", "), ")", file="clipboard", sep="")
かな?使い方は同じ。
- ご回答ありがとうございます。dput(scan(""))、大変便利です。複数グループの縦列別にcsvを作成しテキストエディタで開いてカンマ付きデータを作っていましたが、dput(scan(""))の方が格段に便利です。大変参考になりました。ありがとうございます。 -- [[risperidone]] &new{2015-02-18 (水) 19:05:07};

#comment

**単独でなく複数のデータを一括で読み込みたいのですが... [#t13d2679]
>[[shino]] (2015-02-12 (木) 19:31:14)~
~
はじめまして。~
私は今、以下のデータ(DAU,DPU,行動データ)をそれぞれ一括で読み込もうと試行錯誤しています。~
sample-data/section8/daily/dau/game-01/2013-05-01~2013-10-31~
sample-data/section8/daily/dpu/game-01/2013-05-01~2013-10-31~
sample-data/section8/daily/action/game-01/2013-10-31~
~
下記のコードをRで実行した際~
「関数 "ldply" を見つけることができませんでした 。」とエラーが出てき、ここからどうすればよいのかわかりません。~
ご教授のほどよろしくお願い申し上げます。
 > library(“plyr”)
 > library(“foreach”)
 > readTsvDates <- function(base.dir, app.name, date.from, date.to) {
 + date.from <- as.Date(date.from)
 + date.to <- as.Date(date.to)
 + dates <- seq.Date(date.from, date.to, by = "day")
 + x <- ldply(foreach(day = dates, combine = rbind) %do% {
 + read.csv(sprintf("%s/%s/%s/data.tsv", base.dir, app.name, day),
 + header = T,
 + sep = "\t", stringsAsFactors = F)
 + })
 + x
 + }
 > 
 > # DAUを読みこむ関数
 > readDau <- function(app.name, date.from, date.to = date.from) {
 + data <- readTsvDates("sample-data/section8/daily/dau", app.name,
 + date.from, date.to)
 + data
 + }
 > # DPUを読みこむ関数
 > readDpu <- function(app.name, date.from, date.to = date.from) {
 + data <- readTsvDates("sample-data/section8/daily/dpu", app.name,
 + date.from, date.to)
 + data
 + }
 > # 行動データを読みこむ関数
 > readActionDaily <- function(app.name, date.from, date.to = date.from) {
 + data <- readTsvDates("sample-data/section8/daily/action", app.name,
 + date.from, date.to)
 + data
 + }
 > 
 > # データの読みこみ
 > 
 > # DAU
 > dau <- readDau("game-01", "2013-05-01", "2013-10-31")
  以下にエラー readTsvDates("sample-data/section8/daily/dau", app.name, date.from,  : 
    関数 "ldply" を見つけることができませんでした 
 > head(dau)
     log_date app_name user_id
 1 2013-08-01  game-01   33754
 2 2013-08-01  game-01   28598
 3 2013-08-01  game-01   30306
 4 2013-08-01  game-01     117
 5 2013-08-01  game-01    6605
 6 2013-08-01  game-01     346
 > # DPU
 > dpu <- readDpu("game-01", "2013-05-01", "2013-10-31")
  以下にエラー readTsvDates("sample-data/section8/daily/dpu", app.name, date.from,  : 
    関数 "ldply" を見つけることができませんでした 
 > head(dpu)
     log_date app_name user_id payment
 1 2013-06-01  game-01     351    1333
 2 2013-06-01  game-01   12796      81
 3 2013-06-01  game-01     364     571
 4 2013-06-01  game-01   13212     648
 5 2013-06-01  game-01   13212    1142
 6 2013-06-01  game-01   13212     571
 > # Action
 > user.action <- readActionDaily("game-01", "2013-10-31", "2013-10-31")
  以下にエラー readTsvDates("sample-data/section8/daily/action", app.name, date.from,  : 
    関数 "ldply" を見つけることができませんでした 
 > head(user.action)
  以下にエラー head(user.action) :  オブジェクト 'user.action' がありません 

//
- そもそもforeach(day = dates, .combine = rbind)とちゃんと指定してやればlist型で戻らないので、ldply要らない気がしますが。 --  &new{2015-02-13 (金) 20:46:52};
- .combineの手前の”どっと”をつけ忘れる→listを展開したい→ldplyということでしょうか。 --  &new{2015-02-13 (金) 20:52:32};
- ご返答ありがとうございます!!~
自分でも少しわかりにくいコードでしたので、簡略化してみました。おかげでエラーは発生しなくなりましたが、データは依然として8月からしか読み取れていないようです... -- [[shino]] &new{2015-02-15 (日) 08:34:38};
 > library(plyr)
 > library(foreach)
 foreach: simple, scalable parallel programming from Revolution Analytics
 Use Revolution R for scalability, fault tolerance and more.
 http://www.revolutionanalytics.com
 >
 > readDau <- function(app.name, date.from, date.to) {
 +  date.from <- as.Date(date.from)
 +  date.to <- as.Date(date.to)
 +  dates <- seq.Date(date.from, date.to, by = "day")
 +  ldply(foreach(day = dates, combine = rbind) %do% {
 +  base.dir <- "sample-data/section8/daily/dau"
 +  f <- sprintf("%s/%s/%s/data.tsv",
 +  base.dir, app.name, day)
 +  read.csv(f, header = T, stringsAsFactors = F)
 +  })
 +  }
 >
 > dau <- readDau(“game-01", "2013-05-01", "2013-10-31")
 > head(dau)
     log_date app_name user_id
 1 2013-08-01  game-01   33754
 2 2013-08-01  game-01   28598
 3 2013-08-01  game-01   30306
 4 2013-08-01  game-01     117
 5 2013-08-01  game-01    6605
 6 2013-08-01  game-01     346
自動編集機能があるわけじゃないのだからね!

#comment

**重回帰分析を行った後にVIFが求められない [#hf585ee9]
>[[risperidone]] (2015-02-10 (火) 00:34:05)~
~
初めてこちらに質問させて頂きます。宜しくお願いします。~
R(3.1.2)をMac OS X 10.10.2で使っています。~
重回帰分析までは出来たように思えます。~
説明変数はregimen=投薬数、maleは性別、治療アウトカムは治癒したか否かです。~
データは全て疾患A・B・Cのいずれかに該当します。~
 > result1 = lm(regimen ~ male + 疾患A-1 + 疾患B + 疾患C + 初発年齢 + 
                投与開始年齢 + 最終受診時年齢 + 治療アウトカム, data=dat)
 > summary(result1)
 Call:
 lm(regimen ~ male + 疾患A-1 + 疾患B + 疾患C + 初発年齢 +
    投与開始年齢 + 最終受診時年齢 + 治療アウトカム, data=dat)
 
 Residuals:
     Min      1Q  Median      3Q     Max 
 -4.0473 -1.3977 -0.3918  0.8142 11.5159 
 
 Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
 male            0.19436    0.22706   0.856 0.392499    
 疾患A           0.95790    0.48769   1.964 0.050192 .  
 疾患B           2.58759    0.43024   6.014 4.03e-09 ***
 疾患C           1.93298    0.37667   5.132 4.45e-07 ***
 初発年齢        0.04138    0.02220   1.864 0.063002 .  
 治療開始年齢   -0.08136    0.02203  -3.692 0.000252 ***
 最終受診年齢    0.03569    0.01069   3.340 0.000916 ***
 治療アウトカム  1.49465    0.22467   6.653 9.31e-11 ***
 ---
 Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
 
 Residual standard error: 2.239 on 407 degrees of freedom
 Multiple R-squared:  0.7106,	Adjusted R-squared:  0.7049 
 F-statistic: 124.9 on 8 and 407 DF,  p-value: < 2.2e-16
ここでVIFパッケージをインストールしました。
  URL 'http://cran.ism.ac.jp/bin/macosx/mavericks/contrib/3.1/VIF_1.0.tgz' を試しています 
 Content type 'application/x-gzip' length 2356946 bytes (2.2 Mb)
  開かれた URL 
 ==================================================
 downloaded 2.2 Mb
 
  ダウンロードされたパッケージは、以下にあります 
  	/var/folders/4k/37q819dx1dn03k0zl3n0yhth0000gp/T//Rtmp9lSQKf/downloaded_packages 
 > library(VIF)
 > vif(result1)
  以下にエラー as.vector(y) - mean(y) :  二項演算子の引数が数値ではありません 
  追加情報:  警告メッセージ: 
 In mean.default(y) : argument is not numeric or logical: returning NA
エラーメッセージ後の対応が分からず苦慮しております。ご教授頂けたら幸いです。宜しくお願いします。~
ファイル添付からデータをアップロードさせて頂きました。

//
- data1.csv ですか?変数名が regimen,male,JME,TLE,nJnT,first,AEDage,lastAge,outcome となっているので,このまま lm できません。分からない人だなあ。&br;vif のオンラインヘルプ読みました?vif selects variables for a linear model. It returns a subset of variables for building a linear model. ですよ。vif を計算するものではないし,使い方も違う(第 1 パラメータは lm オブジェクトなんかではない)。&br;使うべきは,DAAG ライブラリの vif じゃないの?? -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-10 (火) 08:51:59};
- DAAGライブラリのvifを用いたいのですが、以下のようなエラーメッセージが出る場合はどうしたら良いでしょうか?  -- [[risperidone]] &new{2015-02-10 (火) 09:42:54};
 URL 'http://cran.ism.ac.jp/bin/macosx/mavericks/contrib/3.1/DAAG_1.20.tgz' を試しています
  Content type 'application/x-gzip' length 1983807 bytes (1.9 Mb)  開かれた URL  
 ==================================================
 downloaded 1.9 Mb    ダウンロードされたパッケージは、以下にあります
   	/var/folders/4k/37q819dx1dn03k0zl3n0yhth0000gp/T//RtmpBg33vj/downloaded_packages
 > library(DAAG)  要求されたパッケージ lattice をロード中です
 Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) :
     ‘latticeExtra’ という名前のパッケージはありません
  エラー:  ‘DAAG’ に対するパッケージもしくは名前空間のロードが失敗しました
- > ‘latticeExtra’ という名前のパッケージはありません&br;といわれているでしょう。DAGG パッケージをインストールするときに,依存パッケージもインストールするように指定しておかないとこんなことになります。&br;パッケージインストーラのウインドウで,「依存パッケージも含める」にチェックを付けておくようにしましょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-10 (火) 11:14:45};
- 無事、VIFが出ました。ありがとうございました。&br;もう1つ質問させてください。data_ANCOVA.csvを今からuploadします。こちらで「JME,TLE,nJnT」をseizure_typeとして「1,2,3」と割り振りしました。変数名は「regimen,sex,seuzire_type,first,AEDage,lastAge,outcom」となります。こちらで分散分析を行ってseizure_typeによってregimen数が異なる事を示したいと思ったのですが、
 > result3 <- lm(regimen ~ sex + seizure_type + first + AEDage + lastAge + outcome, data=dat3)
 > summary(result3)
 
 Call:
 lm(formula = regimen ~ sex + seizure_type + first + AEDage + 
     lastAge + outcome, data = dat3)
 
 Residuals:
     Min      1Q  Median      3Q     Max 
 -3.8267 -1.5011 -0.3003  0.8695 11.3550 
 
 Coefficients:
               Estimate Std. Error t value Pr(>|t|)
 (Intercept)   1.738749   0.572593   3.037 0.002546
 sex           0.191705   0.230669   0.831 0.406413
 seizure_type  0.003416   0.181867   0.019 0.985023
 first         0.033675   0.022452   1.500 0.134426
 AEDage       -0.075155   0.022321  -3.367 0.000832
 lastAge       0.043301   0.010658   4.063 5.82e-05
 outcome       1.609017   0.226135   7.115 5.05e-12
 
 Residual standard error: 2.275 on 408 degrees of freedom
 Multiple R-squared:  0.1676,	Adjusted R-squared:  0.1553 
 F-statistic: 13.69 on 6 and 408 DF,  p-value: 3.515e-14
 > install.packages("car") 省略
 > library(car)
 > Anova(result3)
 Anova Table (Type II tests)
 
 Response: regimen
               Sum Sq  Df F value    Pr(>F)
 sex             3.58   1  0.6907 0.4064126
 seizure_type    0.00   1  0.0004 0.9850233
 first          11.64   1  2.2496 0.1344258
 AEDage         58.68   1 11.3364 0.0008321
 lastAge        85.44   1 16.5058 5.818e-05
 outcome       262.05   1 50.6274 5.053e-12
 Residuals    2111.86 408                  
となりました。seizure_typeのPrが0.9850233となりました。しかし、SPSSでやった一変量の分散分析とは異なる結果(SPSSではseizure_typeのP<0.001)になってしまいました。Rでの処理の仕方が悪かったでしょうか。使用したcsvは同一のものです。 -- [[risperidone]] &new{2015-02-10 (火) 17:03:55};
- 記事の投稿方法について,ちゃんと理解してから利用してください。いちいちこちらが修正していたけど,もういやだ。といいながら,編集したけど(アスタリスクは表示しないモードで)&br;質問の件は,type II とか type III の違いでしょう。私はやる気がないので,これにて失礼。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-10 (火) 17:36:52};
- 修正のお手間をかけ申し訳ありませんでした。Rを使ってtype II・type IIIの両方で分散分析をしましたがseizure_typeのPrが0.9850233とほぼ同一で、SPSSでの一変量の分散分析結果(p<0.001)と大きく異なってしまいました。データの入力方法・コマンドで誤りがあればご教授下さい。お願いします。 -- [[risperidone]] &new{2015-02-10 (火) 21:48:27};
- まだ誰からもコメントがないようなので,本筋ではないがコメント。&br;> 「JME,TLE,nJnT」をseizure_typeとして「1,2,3」と割り振り&br;おかしいでしょうそれは。少なくとも 1,2,3 を factor にしないと,分析的には不適切。&br;> SPSSでやった一変量の分散分析とは異なる&br;よく読んでいなかったのだけど,R での ancova と spss の一変量分散分析(一元配置分散分析)の結果が一致しないのは当たり前(少なくとも同じ P 値になる確率は 0)。~
seizure_type を Factor にする(一元配置分散分析のときは,Factor でなくても同じ結果になる)
 > dat3$seizure_type <- factor(dat3$seizure_type)
 > oneway.test(regimen~seizure_type, dat3, var.equal=TRUE)
 
 	One-way analysis of means
 
 data:  regimen and seizure_type
 F = 10.6063, num df = 2, denom df = 412, p-value = 3.224e-05
lm の結果は違うものになる(seizure_type1 がベースラインになる)
 > result3 <- lm(regimen ~ sex + seizure_type + first + AEDage + lastAge + outcome, data=dat3)
 > summary(result3)
 
 Call:
 lm(formula = regimen ~ sex + seizure_type + first + AEDage + 
     lastAge + outcome, data = dat3)
 
 Residuals:
     Min      1Q  Median      3Q     Max 
 -4.0473 -1.3977 -0.3918  0.8142 11.5159 
 
 Coefficients:
               Estimate Std. Error t value Pr(>|t|)
 (Intercept)    0.95790    0.48769   1.964 0.050192
 sex            0.19436    0.22706   0.856 0.392499
 seizure_type2  1.62969    0.46882   3.476 0.000563
 seizure_type3  0.97509    0.44129   2.210 0.027688
 first          0.04138    0.02220   1.864 0.063002
 AEDage        -0.08136    0.02203  -3.692 0.000252
 lastAge        0.03569    0.01069   3.340 0.000916
 outcome        1.49465    0.22467   6.653 9.31e-11
 
 Residual standard error: 2.239 on 407 degrees of freedom
 Multiple R-squared:  0.1954,	Adjusted R-squared:  0.1816 
 F-statistic: 14.12 on 7 and 407 DF,  p-value: < 2.2e-16
Anova も結果が変わる
 > library(car)
 > Anova(result3)
 Anova Table (Type II tests)
 
 Response: regimen
               Sum Sq  Df F value    Pr(>F)
 sex             3.67   1  0.7327 0.3924989
 seizure_type   70.65   2  7.0439 0.0009832
 first          17.43   1  3.4755 0.0630017
 AEDage         68.37   1 13.6334 0.0002525
 lastAge        55.94   1 11.1536 0.0009160
 outcome       221.96   1 44.2578 9.308e-11
 Residuals    2041.21 407                  
重回帰分析にカテゴリー変数を使うときには注意が必要(初歩的ではあるが) -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-11 (水) 09:29:02};
- ご回答、本当にありがとうございました。初歩的な質問に丁寧に答えて頂き感謝致します。Factorにする事、しっかり勉強させて頂きました。 -- [[risperidone]] &new{2015-02-11 (水) 22:28:42};

#comment

**beeswarmを使った散布図のプロット [#dc15616b]
>[[Bee]] (2015-02-09 (月) 20:24:44)~
~
初めまして。beeswarmを使用して散布図を作成しています。PC上ではカラーで綺麗なのですが、論文投稿のため2群間のプロットを○と●で表示したいのですが、どの様にしてよいのか分かりません。
 data1 <- read.delim("clipboard")
 beeswarm(temp~ day, data = data1,
 pch = 16, pwcol = 1 + as.numeric(kubun),
 xlab = "", ylab = "Follow-up time (months)",
 labels = c("day1", "day3", "day5", "day8", "day10", "day12",
 "day15","day18", "day21"))
 legend("topright", legend = c("F", "G"),
 title = "Censored", pch = 16, col = 1:2)
の、pwcol = 1 + as.numeric(kubun) が、解決するポイントとは思いますが、どの様にすれば良いのか解らず困っております。~
~
何とぞ、お教えの程お願いいたします。~
~
R ×64 3.1.2 を使用しています。 ~

//
- pch=c(1,16)[as.numeric(kubun)] とかにすれば,よいでしょう。&br;data1 <- read.delim("clipboard") では,どんなデータかわからないでしょう。適切な回答を求めるならば,データも添付するなりしてあなたがやったとおりのことを回答者も出来るようにして置いた方がよいですね。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-09 (月) 21:40:37};
- 申し訳ありませんでした。データは以下のとおりです。kubun 毎に色分けしたいと考えています。何とぞ御教示お願いいたします。 -- [[Bee]] &new{2015-02-10 (火) 08:56:47};
 kubun	day	temp
 2	1	35.9
 1	1	36.5
 1	1	36.5
 2	1	36.8
 1	1	36.9
 2	1	36.9
 2	1	37.2
 1	1	37.3
 2	1	37.3
 1	1	38.8
 1	3	36.3
 1	3	36.3
 2	3	36.3
 1	3	36.5
 1	3	36.7
 2	3	36.7
 2	3	36.8
 1	3	36.9
 2	3	37.8
- 以下のようにすればよいでしょう。&br;beeswarm 中の pch, col と pwpch, pwcol の違い,legend 中では pch, pcol を使う(データフレーム中の列名の指定の違い)などに注意。&br;テスト用のデータも,あんなにたくさんは必要ないので,最小限に削っておきます。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-10 (火) 11:53:17};
 library(beeswarm)
 beeswarm(temp ~ day, data = data1,
   pwpch = c(1, 16)[as.numeric(kubun)], pwcol = as.numeric(kubun),
   xlab = "", ylab = "Follow-up time (months)",
   labels = paste("day", c(1, 3, 5, 8, 10, 12, 15, 18, 21), sep=""))
 legend("top", legend = c("F", "G"),
   title = "Censored", pch = c(1,16)[as.numeric(data1$kubun)], col = (1:2)
   [as.numeric(data1$kubun)])
- ありがとうございました。解決いたしました。 pwcol の使い方を勉強してみます。  --  &new{2015-02-10 (火) 19:26:54};

#comment

**あらためて、多重クロス集計について [#vc7cfb96]
>[[島田泰夫]] (2015-02-07 (土) 08:29:45)~
~
ふたたび質問させて下さい。~
~
やはり解決しないので・・・
 wd <- sample(1:16,100, replace=TRUE)
 ws <- sample(0:10,100, replace=TRUE)
 inds <- sample(0:100,100, replace=TRUE)
 d <- data.frame(wd=wd, ws=ws, inds=inds)
ここから、wdとwsのクロス集計表を作成し、そこからこのクロス集計に対応したindsの合計値(表)を得たいのです。~
 tapply(d$inds, d$wd, d$ws, sum)
は、文法上できないですし~
そこで・・
 re <- ftable(d$inds, d$wd, d$ws)
から得られたオブジェクトを操作しようとして
 gyo <- sort(unique(d$inds))
 gyo2 <- length(gyo)
 gyo3 <-  0
 re.mat <- matrix(nr=16, nc=11,0)
 for ( i in 1: gyo2){
  for ( j in 1:16 ){
    gyo3 <- gyo3 +1
   for ( k in 1:11){
    re.mat[j, k] <- re.mat[j, k] + re[gyo3,k]*gyo[i]
 }}}
としてようやく目的の値(表)を得ることができましたが、汚いです。~
もう少し効率的、綺麗な方法はありませんでしょうか?~

//
- tapply を使おうと思ったのは筋がよいですね。ただ,オンラインヘルプを良く読めば,tapply(d$inds, list(d$wd, d$ws), sum) のようにしないといけないだろうということ。そして,少しアフターケアーが必要。
 a <- tapply(d$inds, list(d$wd, d$ws), sum)
 a[is.na(a)] <- 0
 a
しかし,もっと良い方法がある。
 xtabs(inds ~ wd + ws, d)
関数 1 つで,答えが求まる。-- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-07 (土) 09:22:55};
- ありがとうございました。listの使い方、xtabs等、大変参考になりました。勉強します。 -- [[島田泰夫]] &new{2015-02-07 (土) 11:55:01};

#comment

**balloonplotの行名を並び替えたい [#vf558f14]
>[[島田 泰夫]] (2015-02-05 (木) 10:58:21)~
~
初歩的な質問で恐縮です。~
library(gplots)のballoonplotについて、教えて下さい。
 wd1 <- sample(c(1:16),100, replace=TRUE)
 wd2 <- sample(c(1:16),100, replace=TRUE)
 inds  <- sample(c(0:25),100,replace=TRUE)
ここから
 balloonplot(wd1,wd2,inds)
とすると、列名は1〜16にきちんと並びますが、行名がバラバラになります。~
行名を1〜16に並べる方法はありますでしょうか・・・?~

//
- そのようなデータ構造だとballoonplotの仕組みから、決して行名はそろわないと思いますよ。でも、例えば、次のようなデータ構造ならそろいます。従って、データ構造の変更が必要になると思います。 --  &new{2015-02-05 (木) 11:40:23};
 > d <- cbind(expand.grid(wd1 = 1:16, wd2 = 1:16), inds = sample(c(0:25, NA), 256, replace=TRUE))
 > with(d, balloonplot(wd1, wd2, inds))
- なるほど、そういうことだったんですね。ありがとうございました。 -- [[島田泰夫]] &new{2015-02-05 (木) 12:55:09};

#comment

**文字列の置換について [#jb7be865]
>[[Fk]] (2015-02-04 (水) 09:44:05)~
~
お世話になります。 win 7, R 3.0.2を使用しています。~
~
 a <- c("1_2_3_4_5", "2_3_4_1_5")
 dat <- data.frame(C1=c(3,2,4,1,5), C2=c(4,5,3,2,1))
~
ここで、aの数字をdatのC1列からC2列への行方向に置換して、a[1]は"2_5_4_3_1"、a[2]は"5_4_3_2_1"になるようにしたいです。実際にはaはもっとたくさんの要素をもち、datも数十行はあります。~
~
strsplitでaを分割してgsubするという処理をfor文で繰り返そうかと思ったのですが、繰り返しの過程で置換したものを再置換してしまいそうでわからなくなりました。~
~
宜しくお願いします。~

//
- 一行プログラムコンテストなら
 unlist(lapply(lapply(lapply(strsplit(a,"_"),as.numeric),function(x)unlist(lapply(lapply(x,`==`,dat[,"C1"]),function(x){dat[x,"C2"]}))),paste,sep="",collapse="_"))
こんな感じです -- [[なかま]] &new{2015-02-04 (水) 12:42:08};
- ありがとうございます。ちょっと何がどうなっているかわからないので解読してみます。 -- [[Fk]] &new{2015-02-04 (水) 13:10:16};
- 一行だと解読が難しくなるけど,以下のようなプログラムだと何をやっているか明瞭。
 a <- c("1_2_3_4_5", "2_3_4_1_5")
 dat <- data.frame(C1=c(3,2,4,1,5), C2=c(4,5,3,2,1))
 c1 <- as.character(dat$C1) # 拡張可能性を残すように文字型で扱う(data.frame にする必要はない)
 c2 <- as.character(dat$C2) # 同じく
 for (i in seq_along(a)) { # a の各要素について
   s <- unlist(strsplit(a[i], "_")) # "_" を区切り文字として文字ベクトル s を作る
   for (j in seq_along(c1)) { # s の各文字 s[j] について
     s[j] <- c2[which(s[j] == c1)] # s[j] と等しい c1 の要素と同じ位置にある c2 の要素を s[j] に代入
   }
   a[i] <- paste(s, collapse="_") # 文字ベクトル s の要素を "_" で繋いで 1 つの文字列にする
 }
 a
内側の for は sapply で置き換えると
 for (i in seq_along(a)) {
   s <- unlist(strsplit(a[i], "_"))
   s <- sapply(s, function(ch) c2[which(ch == c1)])
   a[i] <- paste(s, collapse="_")
 }
のようになり,さらに,s を次々に関数に渡してやると,
 for (i in seq_along(a)) {
   a[i] <- paste(sapply(unlist(strsplit(a[i], "_")), function(ch) c2[which(ch == c1)]), collapse="_")
 }
のように 1 行になる。外の for も sapply にできるけど,そこまでやるとやり過ぎ感が...C1, C2 も元のままを使うと以下のような一行野郎ができあがる(なかまさんのより若干短い)
 unname(sapply(a,function(b)paste(sapply(unlist(strsplit(b,"_")),function(ch)as.character(dat$C2)[which(ch==as.character(dat$C1))]),collapse="_")))
a の中の数が 1 桁だけならば,which の代わりに chartr を使うようにすればもう少し簡単になるが... -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-04 (水) 14:51:18};

#comment

**時系列軸を反転させたい [#l2d6e83c]
>[[けい]] (2015-02-03 (火) 16:31:35)~
~
はじめまして。~
時系列を使った相関図を書きたいのですが、上下反転がうまく行きません。~
X軸に個数、Y軸に時間という設定で、時間は上から下に進んでいくという流れで設定したいのですけど、
 attach(df)
 x <- strptime(TIME, "%H:%M:%S", tz = "")
 plot(Count, x, pch = 16, col = "#FF5050", cex =1, xlab = "", ylab = "", yaxt = "n")
 r <- as.POSIXct(round(range(x), "mins"))
 axis.POSIXct(2, at = seq(r[1], r[2], by = "mins"), format = "%H:%M")
 detach(df1)
では、当然r[1]が下に来てしまうので、逆になってしまいます。~
seq内のr[1]とr[2]をしたり、byをマイナスにしたり・・(当然エラーになりますが)なかなかうまく行きません。~
プロット自体はplotにylim=c(r[2], r[1])を入れれば反転しますが、軸が表示されなくなってしまいました。~
~
いい方法があれば、どうかよろしくお願いいたします。~

//
- 以下の様にしてみるとか。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-03 (火) 18:12:08};
 set.seed(12345)
 n <- 20
 x <- Sys.time()+1:n*60
 Count <- sample(100, n)
 plot(Count, x, pch = 16, col = "#FF5050", cex =1, xlab = "", ylab = "", yaxt = "",
 ylim=c(x[n], x[1]))
 axis(2, at = as.numeric(x), labels=substring(as.character(x), 12, 16))
- 上手く上下逆の時系列軸を作れました。あとは自分で改良してやってみます。ありがとうございました。 -- [[けい]] &new{2015-02-04 (水) 09:56:18};

#comment

**「&#8804;」をtextとして図に描きたい [#jd4dc09f]
>[[高田]] (2015-02-02 (月) 19:43:14)~
~
はじめまして。~
数学記号の「&#8804;」をtextとして図に描きこめないものかと苦労しております。~
今のところ試してみたのは、expression関数や、mtextでfontを指定してみる方法ですが、うまくいきません。~
どなたかいい方法をご存じの方おられないでしょうか。~
どうかよろしくお願い申し上げます。~

//
- どこに描き込みたいのでしょうか?それによるでしょうから,取り合えずのプログラムを掲載してみれば?&#8804; を @ ででも置き換えて。&br;以下の例も参考になるかな? -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-02 (月) 21:59:30};
 plot(0, 0, xlim=c(0,1), ylim=c(0,1), type="n", xlab="u ≦ v", ylab=expression(aa <= bb))
 text(0.2, 0.2, expression(x <= y))
 text(0.2, 0.5, "x ≦ y")
 mtext("x ≦ y", 3, 0.5)
 mtext(expression(x <= y), 1, 3)
 legend("topright", legend=c(expression(x1 <= y2), "w≦q"))
&ref(sample2.png);
- レスポンスありがとうございます。~
説明が不足しておりました。~
確かにご指摘のように「x&#8804;90」などの書き込みは可能なのですが、「&#8804;90」などと文字を削ると途端に無理になってしまいます。~
例えば、
 mtext(expression(90<=), 1, 3)
などとすると、Unicodeで「90<U+2264>」と表示されてしまいます。~
また、
 mtext(expression(paste("90<=", "", sep="")), 1, 3)
としても同様の結果です。~
どうにか「&#8804;」だけ吐き出す方法はないものでしょうか。 -- [[高田]] &new{2015-02-03 (火) 11:55:46};
- expression("" <= y) とするとどうでしょうか。 -- [[wakakumo]] &new{2015-02-03 (火) 12:33:43};
- 例に示したように"≦" を使えばよいのでは?mtext("90≦", 1, 1) -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-02-03 (火) 12:40:05};
- 前提や縛りなどの説明がないために回答側が迷走しているように見えます。UnicodeはNGという縛りで回答を求めているのでしょうか。どのグラフィックディバイスの話をしているのでしょうか。X11()など画面表示でしょうか、それともPDFやPostScriptでしょうか。ちなみに、こちらの環境ではmtext(expression(90<=''), 1, 3)またはmtext(expression(90<=""), 1, 3)によってX11()及びpdf()で「90&#8804;」と表示されます。もちろん、mtext(expression(""<=90), 1, 3)も問題ありません。 --  &new{2015-02-03 (火) 13:08:02};

#comment

**MySQLからデータフレームに取り込み後のラベルの変更について [#rf03fced]
>[[マンジャ]] (2015-01-28 (水) 21:30:08)~
~
はじめまして、RでパッケージRMySQLを使いテーブルのデータをRのデータフレームとして取り込みました。~
~
※コネクション確立後にSQLを発行してデータフレームに取り込んだ所、
 data.table <- dbGetQuery(dbconnector, "select * from 〜 ")
※データ(MySQLテーブル:販売履歴)~
商品名 販売日時 販売単価 販売個数~
りんご ○○○○ &#9747;&#9747;&#9747;&#9747; △△△△~
みかん ○○○○ &#9747;&#9747;&#9747;&#9747; △△△△~
なし  ○○○○ &#9747;&#9747;&#9747;&#9747; △△△△~
~
※データフレーム~
  商品名 販売日時 販売単価 販売個数~
1 りんご ○○○○ &#9747;&#9747;&#9747;&#9747; △△△△~
2 みかん ○○○○ &#9747;&#9747;&#9747;&#9747; △△△△~
3 なし  ○○○○ &#9747;&#9747;&#9747;&#9747; △△△△~
~
データフレーム上では1,2,3が自動採番されてしまいます。~
この時商品名をラベルとして変更するにはどのようにすれば良いのでしょうか?~
~
レコード数は数万件あり一括でラベルとして変更したく思います。~
~
宜しくご示唆お願いします。~

//
- その番号は行ラベルなので,データの分析には直接関係ありません。そのままにしておいても,何の不都合もありません。&br;どうしても,商品名列にある文字列を行ラベルにしたいということならば,rownames(data.table) <- data.table$商品名 とすればよいですが,もし商品名がユニークでない場合は警告が出ますよ。&br;data.frame のオンラインヘルプを見てください,以下の様に書かれていますよ。&br;A data frame is a list of variables of the same number of rows with unique row names, given class "data.frame". If no variables are included, the row names determine the number of rows. -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-01-29 (木) 09:43:29};
- 河童さま ありがとうございました。上手く行きました。 当該のテーブルは品目毎の売上テーブルでありクラスター分析を用いて似たような商品を調べようとした所、品名(品目コード)が分析の対象になると都合が悪いと思い質問させて頂いた次第です。今回はお助け頂きありがあとうございました。。 -- [[マンジャ]] &new{2015-01-29 (木) 13:18:31};

#comment

**Loessにおける平滑化幅について [#h377fe0e]
>[[SAN]] (2015-01-25 (日) 13:50:03)~
~
はじめまして,Loessにおける平滑化幅についてなのですが,Loessにおける平滑化パラメータはspanの引数で決められているみたいなのですが,疑問点があります.~
~
例えば,100個のデータがあった場合,平滑幅を10にしてLoessをかけるといった場合spanパラメータをどのように設定するべきなのでしょうか?~
どなたかご教授お願いします.~

//
- ほかの人に聞くのもいいけど,回答を待つ間に,色々設定してみて,結果を比較してみて,その結果を基に他人の意見を聞くという態度が好ましいのでは?&br;分析に使用したデータとプログラムも合わせて参照できるようにしておくと,モアベターでしょう(by 小森のおばちゃま) -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-01-25 (日) 19:58:47};
- 返信ありがとうございます.色々設定してやっているのですが,違う手法と比較した際に同じ平滑幅ではないと比較できないとおもうのでそのつもりで質問していたのですが...すみません -- [[SAN]] &new{2015-01-25 (日) 22:37:30};

#comment

**ターム・文書行列の行数について [#m4cf720e]
>[[初心者]] (2015-01-23 (金) 00:04:22)~
~
欧米語のテキストマイニングを行うパッケージのひとつにtmパッケージというのがありますが、これを使って、複数の文書ファイルのターム・文書行列を作成しますと、常に行数が36行になってしまいます。~
~
また、潜在的意味インデキシング用のパッケージ(lsa)を利用し、特異値分解しましても、同じように36行のターム・文書行列が得られます。~
~
英文のパッケージガイドを見ましてもなにも記載されていないのですが、何か制約があるのでしょうか?また、36行に限らず、すべてのデータを分析対象にする場合、どのようにすれば良いでしょうか?~
~
ご教示いただけますと助かります。~

//

#comment

**xlsxについて [#nece1767]
>[[KK]] (2015-01-22 (木) 08:16:18)~
~
お世話になります。~
~
エクセルを読み込もうとしてxlsxをインストールしたのですが、読み込もうとすると以下のようなエラーが出ます。
 >  library(xlsx)
 要求されたパッケージ rJava をロード中です 
 Error :  .onLoad は loadNamespace()('rJava' に対する)の中で失敗しました、詳細は: 
  call: fun(libname, pkgname) 
  error: JAVA_HOME cannot be determined from the Registry 
 エラー:  パッケージ ‘rJava’ をロードできませんでした 
別途rJavaをインストールしても同じエラーが出ました。~
環境はWIn 7 64-bit, R 3.1.2 64-bit, xlsx_0.5.7です。~
~
どなたか宜しくお願いします。~

//
- https://teratail.com/questions/2816 --  &new{2015-01-23 (金) 19:11:27};
- 遅くなりましたが、自己解決しました。デフォルトでは64bitのwindowsでも32bit版の
Javaがインストールされてしまうため、別途64bit版のJavaをインストールしなければならない
そうです。
http://d.hatena.ne.jp/dichika/20141112/p1 -- [[KK]] &new{2015-03-16 (月) 09:43:37};

#comment

**あるグループを除去後グループごとに単回帰を行う方法について [#gda0600e]
>[[佐藤]] (2015-01-21 (水) 08:55:58)~
~
はじめまして。~
Windows 7でR version 3.1.0 を使用しています。~
添付のようなデータでid=cを(サンプル数が少ないため)除去したうえで単回帰をして、idごとに回帰係数を取り出したいのですが、エラーメッセージがでてしまいます。除去したはずのid=cがobservation数が0で残っているのが原因ではないかと考えています~
エラーを出さずに、idごとに解析を行うためにはどのようにすればいいのでしょうか?例ではグループは2つなので個別にしてもいいのですが、実際に使いたいデータではグループ数が非常に多いので個別に分けずに解析したいと考えています。~
~
用いたデータ
 id	y	x
 a	1	1
 a	3	2
 a	3	3
 a	3	4
 a	3	5
 a	3	6
 a	3	7
 a	3	8
 a	3	9
 a	3	10
 b	1	1
 b	1	2
 b	2	3
 b	3	4
 b	4	5
 b	5	6
 b	4	7
 b	5	8
 b	6	9
 b	4	10
 b	1	11
 b	2	12
 b	3	13
 b	4	14
 b	5	15
 b	6	16
 c	3	1
 c	3	2
 c	3	3
 c	3	4
プログラム
 d <- read.csv("dummy.csv", 
   colClasses=c("factor", "numeric", "numeric"), 
   col.names=c("id", "y", "x")) #データ読み込み
 d2 <- do.call("rbind", by (d, d$id, function(x)
   subset(x, length(id)>=10))) # サンプル数が10以上のidのみ抽出
 d3 <- lapply(split(d2, d2$id), function(x) {
   coef(lm(y~x, data=x))}) # わなごとに線形回帰
 d4 <- do.call(rbind, d3) # リストをたてに並べる
 d5 <- unique(d2$id) # 5日分揃っているわなid名を並べる
 d6 <- cbind(d4, d5) # わなごとに線形回帰の傾きを並べる
エラーメッセージ
 > d3<- lapply(split(d2, d2$id), function(x) {
 + coef(lm(y~x, data=x))}) # わなごとに線形回帰
  以下にエラー lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
   0 (non-NA) cases
 > dd <- split(d2,d2$id)
 > dd
 $a
      id y  x
 a.1   a 1  1
 a.2   a 3  2
 a.3   a 3  3
 a.4   a 3  4
 a.5   a 3  5
 a.6   a 3  6
 a.7   a 3  7
 a.8   a 3  8
 a.9   a 3  9
 a.10  a 3 10
 
 $b
      id y  x
 b.11  b 1  1
 b.12  b 1  2
 b.13  b 2  3
 b.14  b 3  4
 b.15  b 4  5
 b.16  b 5  6
 b.17  b 4  7
 b.18  b 5  8
 b.19  b 6  9
 b.20  b 4 10
 b.21  b 1 11
 b.22  b 2 12
 b.23  b 3 13
 b.24  b 4 14
 b.25  b 5 15
 b.26  b 6 16
 
 $c
 [1] id y  x 
  <0 行> (または長さ 0 の row.names

//
- d2$id と入力してみれば分かりますが,削除した c が level としては残っています。&br;d2 を作った後に,d2$id <- factor(d2$id) とすればよいでしょう。-- [[河童の屁は,河童にあらず,屁である。]] &new{2015-01-21 (水) 11:25:17};
- ご教示いただきありがとうございました。解決しました。大変助かりました。 -- [[佐藤]] &new{2015-01-21 (水) 14:00:29};

#comment

**対応分析(数量化III類)実行時のエラーについて [#vc6435fe]
>[[田中]] (2015-01-11 (日) 11:29:25)~
~
 初めまして。エラーがでてしまいました。
  A B C D E F G H I
 ? 3 3 2 2 1 3 3 3 3
 ? 3 2 2 2 1 2 2 2 3
 ? 3 3 2 2 1 2 2 2 3
 ? 3 3 2 2 1 3 3 3 2
 ? 3 1 2 2 1 3 1 2 2
 ? 3 1 2 3 2 3 2 2 3
?以降同様のデータに
 > A <- factor(gakuryoku$A, level=c(1:3), labels="A")
 > B <- factor(gakuryoku$B, level=c(1:3), labels="B")
 > C <- factor(gakuryoku$C, level=c(1:3), labels="C")
 > D <- factor(gakuryoku$D, level=c(1:3), labels="D")
 > E <- factor(gakuryoku$E, level=c(1:3), labels="E")
 > F <- factor(gakuryoku$F, level=c(1:3), labels="F")
 > G <- factor(gakuryoku$G, level=c(1:3), labels="G")
 > H <- factor(gakuryoku$H, level=c(1:3), labels="H")
 > I <- factor(gakuryoku$I, level=c(1:3), labels="I")
 gakuryoku <- data.frame(A, B, C, D, E, F, G, H, I)
 > summary(gakuryoku)
   A       B       C       D       E      F       G       H       I    
  A1: 0   B1:15   C1: 1   D1: 0   E1:9   F1: 1   G1: 2   H1: 1   I1:4  
  A2: 6   B2: 2   C2:19   D2:13   E2:9   F2:12   G2: 5   H2:12   I2:9  
  A3:14   B3: 3   C3: 0   D3: 7   E3:2   F3: 7   G3:13   H3: 7   I3:7  
 > library(MASS)
 > result <- mca(gakuryoku)
  以下にエラー svd(X) : infinite or missing values in 'x'
このようになってしまい01データに手書きでなおしたところ
 > library(MASS)
 > result <- corresp(gakuryoku, nf=2)
  以下にエラー if (any(x < 0 | x%%1 > 10 * sqrt(.Machine$double.eps))) warning("negative or non-integer entries in table") : 
    TRUE/FALSE が必要なところが欠損値です 
このようになってしまいました。~
 ご存知のかたがいらっしゃいましたら教えていただければ幸いです。よろしくお願い致します。~

//
- summary(gakuryoku) の結果を見れば分かるように,A1:0, C3:0, D1:0 のように,反応のないカテゴリーがあります。計算プログラムはそのようなデータを与えられたらこけてしまいます。少なくとも,A <- factor(gakuryoku$A, level=c(2:3), labels="A") のようにすべきでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-01-11 (日) 12:03:02};
- ありがとうございます 解くことができました!!~
すみません できれば加えて質問させていただきたいのですが,corresp でnf=15のような対応分析と多重対応分析したものは意味が異なってしまいますでしょうか たびたび申し訳ありません。結果としては異なる数字がでてのですがどちらを用いるべきか悩んでいます。 -- [[田中]] &new{2015-01-11 (日) 16:10:05};
- nf=15 って,また,極端な。&br;適切に分析すれば,以下に示すように,両者は等価な結果になりますよ。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-01-11 (日) 21:08:20};~
MASS パッケージの mca は,第1引数にデータフレーム(各列は factor),第2引数に求める次元数を指定する。
 > d <- data.frame(
 + 	V1=c("G1", "G1", "G4", "G2", "G1", "G2", "G4", "G2", "G1", "G2",
 + 	     "G3", "G1", "G4", "G3", "G2", "G2", "G4", "G3", "G1", "G1"),
 + 	V2=c("G4", "G1", "G4", "G3", "G4", "G1", "G2", "G4", "G4", "G2",
 + 	     "G2", "G3", "G1", "G4", "G3", "G2", "G3", "G4", "G4", "G4"),
 + 	V3=c("G3", "G4", "G2", "G2", "G1", "G4", "G4", "G1", "G2", "G2",
 + 	     "G2", "G2", "G4", "G2", "G2", "G1", "G2", "G2", "G2", "G1"),
 + 	V4=c("G1", "G4", "G4", "G2", "G1", "G1", "G1", "G1", "G4", "G4",
 + 	     "G3", "G1", "G2", "G3", "G1", "G1", "G3", "G2", "G2", "G4"))
 > head(d)
   V1 V2 V3 V4
 1 G1 G4 G3 G1
 2 G1 G1 G4 G4
 3 G4 G4 G2 G4
 4 G2 G3 G2 G2
 5 G1 G4 G1 G1
 6 G2 G1 G4 G1
  : 以下略
mca による結果
 > library(MASS)
 > mca.ans <- mca(d, nf=4)
 > mca.ans$rs
               1             2           3            4
 1  -0.026164906  0.0727723629  0.02915530  0.017382771
 2  -0.064324198 -0.0332701769  0.05114780 -0.015152209
 3   0.008399898 -0.0046851523  0.03377283 -0.007587154
 4   0.021779690 -0.0192237849 -0.02840124  0.070306712
 5  -0.024902139  0.0594956357 -0.00176808 -0.010356828
 6  -0.067724238 -0.0463843306 -0.01937229 -0.002168915
 7  -0.033804964 -0.0478207290 -0.02440187 -0.036684297
 8  -0.023898191  0.0437365528 -0.04181725 -0.010419718
 9   0.003553358  0.0327554722  0.04300472 -0.001282724
 10  0.004376380 -0.0044299836 -0.03101589 -0.028594653
 11  0.081159763 -0.0262334048 -0.01360086 -0.058987930
 12  0.005643769  0.0152553961 -0.01674848  0.050368614
 13 -0.048749672 -0.0867859703  0.03984140  0.011590533
 14  0.081340688 -0.0048070319  0.02037058 -0.031738891
 15  0.006647717 -0.0005036868 -0.05679765  0.050305724
 16 -0.024079116  0.0223101799 -0.07578869 -0.037668756
 17  0.053220714 -0.0412113236 -0.01142654  0.026460106
 18  0.053742257 -0.0045010348  0.03421316  0.005866176
 19  0.014281342  0.0166803033  0.04093021  0.031764449
 20 -0.020498151  0.0568507065  0.02870284 -0.023403011
 > mca.ans$cs
                  1            2            3            4
 V1.G1 -0.028758519  0.061572202  0.059474742  0.020657976
 V1.G2 -0.024742727 -0.001464130 -0.100721937  0.020406415
 V1.G3  0.129085140 -0.023153151  0.032606545 -0.082935116
 V1.G4 -0.009372356 -0.088190296  0.022547198 -0.004559743
 V2.G1 -0.107926641 -0.108426052  0.056979406 -0.005600561
 V2.G2  0.012380084 -0.027445479 -0.086408024 -0.118695929
 V2.G3  0.039081385 -0.022320009 -0.067651392  0.144720841
 V2.G4  0.013103783  0.058260012  0.049477716 -0.009699774
 V3.G1 -0.041806012  0.089113664 -0.054104436 -0.059993352
 V3.G2  0.054400021 -0.007267273  0.003103075  0.028487799
 V3.G3 -0.046857079  0.142220572  0.069589089  0.050965044
 V3.G4 -0.096079775 -0.104683805  0.028173707 -0.031089356
 V4.G1 -0.042147810  0.029036665 -0.061920342  0.007607840
 V4.G2  0.018380083 -0.045843728  0.051665291  0.087611794
 V4.G3  0.128773807 -0.047067716 -0.003705030 -0.062808472
 V4.G4 -0.024531855  0.018456948  0.059963333 -0.044576896
MASS パッケージの corresp は,データフレームまたは行列を引数とする。それぞれの列(変数)は factor であってはならない。~
上で使った d を,以下のような 0/1 データ行列 m に変換する。
 > head(m)
      V1.G1 V1.G2 V1.G3 V1.G4 V2.G1 V2.G2 V2.G3 V2.G4 V3.G1 V3.G2 V3.G3 V3.G4 V4.G1 V4.G2 V4.G3 V4.G4
 [1,]     1     0     0     0     0     0     0     1     0     0     1     0     1     0     0     0
 [2,]     1     0     0     0     1     0     0     0     0     0     0     1     0     0     0     1
 [3,]     0     0     0     1     0     0     0     1     0     1     0     0     0     0     0     1
 [4,]     0     1     0     0     0     0     1     0     0     1     0     0     0     1     0     0
 [5,]     1     0     0     0     0     0     0     1     1     0     0     0     1     0     0     0
 [6,]     0     1     0     0     1     0     0     0     0     0     0     1     1     0     0     0
  : 以下略
corresp による結果
 > corresp.ans <- corresp(m, nf=4)
 > corresp.ans$rscore
              [,1]        [,2]        [,3]        [,4]
  [1,] -0.62635736 -1.81986611  0.80575746 -0.53244003
  [2,] -1.53984634  0.83200909  1.41355833  0.46411717
  [3,]  0.20108378  0.11716467  0.93337091  0.23239702
  [4,]  0.52138041  0.48074177 -0.78491769 -2.15351783
  [5,] -0.59612820 -1.48784631 -0.04886397  0.31723305
  [6,] -1.62123935  1.15996332 -0.53538697  0.06643460
  [7,] -0.80925145  1.19588427 -0.67438798  1.12365214
  [8,] -0.57209485 -1.09374861 -1.15569243  0.31915939
  [9,]  0.08506324 -0.81913754  1.18851013  0.03929025
 [10,]  0.10476545  0.11078350 -0.85717801  0.87586366
 [11,]  1.94287015  0.65603593 -0.37588337  1.80681978
 [12,]  0.13510526 -0.38150168 -0.46287335 -1.54280729
 [13,] -1.16701035  2.17031357  1.10108639 -0.35502187
 [14,]  1.94720128  0.12021259  0.56297632  0.97217272
 [15,]  0.15913860  0.01259603 -1.56970181 -1.54088094
 [16,] -0.57642599 -0.55792527 -2.09455211  1.15380645
 [17,]  1.27404188  1.03059855 -0.31579223 -0.81048179
 [18,]  1.28652700  0.11256032  0.94554009 -0.17968290
 [19,]  0.34187869 -0.41713526  1.13117743 -0.97295556
 [20,] -0.49070184 -1.42170283  0.79325287  0.71684197
 > corresp.ans$cscore
             [,1]        [,2]        [,3]        [,4]
 V1.G1 -0.5144480 -1.10143703  1.06391653 -0.36954110
 V1.G2 -0.4426114  0.02619115 -1.80176879 -0.36504106
 V1.G3  2.3091452  0.41417615  0.58328362  1.48358847
 V1.G4 -0.1676578  1.57759598  0.40333654  0.08156717
 V2.G1 -1.9306505  1.93958419  1.01927861  0.10018589
 V2.G2  0.2214617  0.49095966 -1.54571372  2.12329733
 V2.G3  0.6991091  0.39927246 -1.21018490 -2.58884511
 V2.G4  0.2344076 -1.04218678  0.88508429  0.17351483
 V3.G1 -0.7478487 -1.59411368 -0.96784958  1.07319370
 V3.G2  0.9731372  0.13000094  0.05550950 -0.50960523
 V3.G3 -0.8382049 -2.54411894  1.24484748 -0.91169042
 V3.G4 -1.7187273  1.87264084  0.50398660  0.55614330
 V4.G1 -0.7539629 -0.51942365 -1.10766476 -0.13609317
 V4.G2  0.3287929  0.82007753  0.92421682 -1.56724742
 V4.G3  2.3035759  0.84197290 -0.06627759  1.12355210
 V4.G4 -0.4388392 -0.33016792  1.07265671  0.79741575
mca.ans$rs と mca.ans$cs および corresp.ans$rscore と corresp.ans$cscore の値は全く異なるように見えるが,両者の比を取ってみれば,同じであることがわかる。~
要するに定数倍になっているだけ。(定数倍になっていないようなら,あなたの使い方が悪い証拠)
 > options(digits=15)
 > mca.ans$rs / corresp.ans$rscore
                     1                   2                  3                   4
 1  0.0417731277160878 -0.0399877564039938 0.0361837189716289 -0.0326473788200238
 2  0.0417731277160868 -0.0399877564039941 0.0361837189716296 -0.0326473788200223
 3  0.0417731277160874 -0.0399877564039920 0.0361837189716295 -0.0326473788200222
 4  0.0417731277160871 -0.0399877564039938 0.0361837189716303 -0.0326473788200232
 5  0.0417731277160877 -0.0399877564039937 0.0361837189716316 -0.0326473788200234
 6  0.0417731277160869 -0.0399877564039944 0.0361837189716289 -0.0326473788200271
 7  0.0417731277160865 -0.0399877564039941 0.0361837189716286 -0.0326473788200237
 8  0.0417731277160877 -0.0399877564039935 0.0361837189716295 -0.0326473788200248
 9  0.0417731277160847 -0.0399877564039941 0.0361837189716293 -0.0326473788200123
 10 0.0417731277160868 -0.0399877564039947 0.0361837189716291 -0.0326473788200238
 11 0.0417731277160871 -0.0399877564039930 0.0361837189716277 -0.0326473788200234
 12 0.0417731277160859 -0.0399877564039937 0.0361837189716307 -0.0326473788200232
 13 0.0417731277160864 -0.0399877564039939 0.0361837189716297 -0.0326473788200247
 14 0.0417731277160870 -0.0399877564039879 0.0361837189716300 -0.0326473788200230
 15 0.0417731277160864 -0.0399877564040110 0.0361837189716298 -0.0326473788200229
 16 0.0417731277160875 -0.0399877564039929 0.0361837189716293 -0.0326473788200240
 17 0.0417731277160872 -0.0399877564039935 0.0361837189716299 -0.0326473788200231
 18 0.0417731277160870 -0.0399877564039893 0.0361837189716294 -0.0326473788200265
 19 0.0417731277160868 -0.0399877564039947 0.0361837189716291 -0.0326473788200239
 20 0.0417731277160878 -0.0399877564039938 0.0361837189716294 -0.0326473788200229
 > mca.ans$cs / corresp.ans$cscore
                        1                   2                  3                   4
 V1.G1 0.0559016994374954 -0.0559016994374948 0.0559016994374943 -0.0559016994374964
 V1.G2 0.0559016994374953 -0.0559016994375155 0.0559016994374948 -0.0559016994374922
 V1.G3 0.0559016994374948 -0.0559016994374923 0.0559016994374962 -0.0559016994374943
 V1.G4 0.0559016994374905 -0.0559016994374947 0.0559016994374959 -0.0559016994374945
 V2.G1 0.0559016994374944 -0.0559016994374951 0.0559016994374953 -0.0559016994374897
 V2.G2 0.0559016994374958 -0.0559016994374951 0.0559016994374939 -0.0559016994374952
 V2.G3 0.0559016994374949 -0.0559016994374948 0.0559016994374959 -0.0559016994374945
 V2.G4 0.0559016994374930 -0.0559016994374950 0.0559016994374945 -0.0559016994374919
 V3.G1 0.0559016994374958 -0.0559016994374944 0.0559016994374945 -0.0559016994374952
 V3.G2 0.0559016994374948 -0.0559016994374915 0.0559016994374895 -0.0559016994374948
 V3.G3 0.0559016994374961 -0.0559016994374948 0.0559016994374939 -0.0559016994374954
 V3.G4 0.0559016994374943 -0.0559016994374951 0.0559016994374963 -0.0559016994374945
 V4.G1 0.0559016994374952 -0.0559016994374937 0.0559016994374949 -0.0559016994374900
 V4.G2 0.0559016994374959 -0.0559016994374942 0.0559016994374941 -0.0559016994374954
 V4.G3 0.0559016994374950 -0.0559016994374936 0.0559016994374833 -0.0559016994374949
 V4.G4 0.0559016994374950 -0.0559016994374947 0.0559016994374950 -0.0559016994374943
- ほんとうにありがとうございます。 具体的な数字で理解できました。 参考にさせていただきます -- [[田中]] &new{2015-01-13 (火) 15:38:34};

#comment

**C言語で書かれた関数をRから呼び出す方法 [#p3961356]
>[[toyan]] (2015-01-05 (月) 15:16:22)~
~
お世話になります。~
~
環境は、~
R version 3.1.1 (2014-07-10)~
OS:Windows 7~
Platform: i386-w64-mingw32/i386 (32-bit)~
です。~
~
パッケージmgcvの関数smooth.construct.cr.smooth.spec()を若干書き換えて使用したいと思っています。ソースファイルsmooth.rのうち、該当部分に修正を加えて、実行しようとしたところ、
  oo <- .C(C_crspl,x=as.double(x),n=as.integer(nx),xk=as.double(k),
           nk=as.integer(nk),X=as.double(X),S=as.double(S),
           F=as.double(F),Fsupplied=as.integer(F.supplied))
のところで、引っかかってしまい、
 以下にエラー my.cr(x, knots = kn) :  オブジェクト 'C_crspl' がありません
というメッセージが出て実行できません。Cのソースファイルmgcv.cを見ると、void crspl()という関数が目的の関数のようなので、上記のC_crsplをcrsplに書き換えてみても同じようなエラーメッセージが出てしまいます。"crspl"と文字列に変えてみても同様です。~
~
パッケージmgcvのlibフォルダにあるmgcv.dllファイルをdyn.loadで読み込もうとしても、
 > dyn.load("c:/r/library/mgcv/libs/i386/mgcv.dll")
 > is.loaded("mgcv")
 [1] FALSE
となって、必要なライブラリが読み込めていないようです。~
~
このように、必要なC関数をRから読み込むにはどうしたらよろしいのでしょうか?~
初歩的な質問で恐縮ですが、御教示のほどよろしくお願い申し上げます。~

//
- 最小限の再現サンプルを示していないので確認のしようがないが、まず、最初の一歩としてnamespaceを勉強されたらいかがだろう。その上で、C_crsplの代わりにmgcv:::C_crsplと書いてみるとか。解決してもまた別のところで引っかかるとは思うが。加えてloadNamespace()やattachNamespace()のヘルプも参照されよ --  &new{2015-01-05 (月) 17:33:55};
- mgcv:::C_crspでうまくいきました。ありがとうございました。これからnamespaceについても勉強していくつもりです。 -- [[toyan]] &new{2015-01-06 (火) 11:21:19};

#comment

**統計分析の結果の記載法 [#r26bb7aa]
>[[Beginner]] (2015-01-03 (土) 15:38:57)~
~
two-way anovaの結果で独立変数1の自由度が7, 独立変数2の自由度が1でresidualsの自由度が87の結果が出ました。これに関してF値を記載する場合はどうすればよいのでしょうか。~
F値にはanova(aov(x~y))のような独立変数一つの値を用いるべきなのでしょうか。~
周りによく知っている人が居らず書籍もなかなか見つからずで困っています。~
どうか教えて頂ければ幸いです。~

//
- 独立変数というより,要因と言った方がよいでしょうが,要因ごとにF値(第1自由度,第2自由度),P値を書くべきでしょう?&br;書籍もなかなか見つからず,なんてことはいまどき理由にならないでしょう。インターネットで「二元配置分散分析」をキーワードにして検索すれば,計算例も含めたくさんのページが見つかるでしょう。&br;http://www.ipc.shimane-u.ac.jp/food/kobayasi/kurikaesinoarunigenhaiti%20excel.htm でもご覧になれば? -- [[河童の屁は,河童にあらず,屁である。]] &new{2015-01-03 (土) 16:14:04};

#comment

**twitteRのOAuth認証について [#e508e5db]
>[[南]] (2014-12-31 (水) 04:17:37)~
~
windows7 64bit R 3.1.2~
[[R言語でTwitterを操作する:http://needtec.exblog.jp/20588155/]]~
このサイトに沿って、Oauth認証を試みてます。
 registerTwitterOAuth(cred)
 [1] TRUE
まではいけたのですが、
 userTimeline("mima_ita",cainfo="cacert.pem")
 [1] "Authorization Required"
 Error in twInterfaceObj$doAPICall(cmd, params, method, ...) : 
   Error: Authorization Required
となってしまいます。ログインが上手く言っていないということはわかるのですが、
 registerTwitterOAuth(cred)
 [1] TRUE
となっているので、なぜログインができていない状態になっているのかがわかりません。どうすればログイン状態にできるでしょうか?~

//

#comment

**月毎の平均値の出しかたについて [#za65c666]
>[[はなちゃん]] (2014-12-30 (火) 17:08:04)~
~
エクセル上に,日ごとのデータが100年分約36000個あります.~
このデータの月毎の平均値を,上から計算していくことはできないでしょうか?~
コピーペーストで1ヶ月毎に平均していくと1200回やる必要があり大変です。~
Rでできないでしょうか?エクセルでもいいのですが。~

//
- 何年何月何日のデータというのがちゃんと分かっているのでしょうか?欠損値があるときはどのようになっているのでしょうか?そんなことにはお構いなく,月はどうでもよいから先頭から順に30日分のデータの平均値を求めたいのか?プログラムの仕様をはっきりしてくれないと。無駄骨折りはしたくないので。&br;確実に言えることは,「Excel でやるなんて止めた方がよい(VBA使うにしても)」ということ。Excel じゃなければ,別に,R でなくてもよいでしょうしね。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-12-30 (火) 17:38:34};
- ご回答ありがとうございます。Ap1932.csvファイルを添付しました.1列目が年月日で19320101から始まっています。2列目がデータで欠損値はありません.これらのデータから,1932年1月,2月....2014年11月までの月平均値を求めたいのです。どうぞよろしくお願い致します。 -- [[はなちゃん]] &new{2014-12-30 (火) 19:12:18};
- > Ap1932.csvファイルを添付しました&br;されてないようですね -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-12-30 (火) 21:17:55};
 EXCEL のデータ!!を test.csv というファイルに CSV として保存したファイルが以下のようならば,
 date,value
 19320101,4
 19320102,5
 19320103,7
 19320104,9
 19320105,8
 19320106,9
 19320201,5
 19320201,14
 19320202,15
 19320203,17
 19320304,19
 19320405,18
 19320406,19
 19320401,15
 以下の 2 行で片付くでしょう
 d <- read.csv("test.csv")
 by(d$value, d$date%/%100, mean)
- 添付されていなかったようですみません.添付のタイミングがわかりません。この文章を入れた後すぐにファイルAp1932.csvを添付します。よろしくお願いします。 -- [[はなちゃん]] &new{2014-12-30 (火) 21:55:40};
- 河童さんありがとうございました.うまくいきました.たった2行で驚きです。月によっては28,29,30,31日とあるのにどのようにプログラムでは判断されてるのでしょうか。あと,計算された月平均値だけを一列に並べる方法を教えてください。よろしくお願いします。 -- [[はなちゃん]] &new{2014-12-31 (水) 08:31:49};
- > 計算された月平均値だけを一列に並べる方法&br;c(by(d$value, d$date%/%100, mean)) とするだけ&br;さらに,名前も要らないというならば&br;unname(c(by(d$value, d$date%/%100, mean))) -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-12-31 (水) 11:36:25};
- 平均値だけになり順番に並べることができました。河童さん本当にありがとうございました.Rで平均値を表示させると,16個数字が横に並ぶ表のような表示になります。これを始めから縦に1列に並べることはできますか?現在は,別のプログラムで,表を1列に直しています。 -- [[はなちゃん]] &new{2014-12-31 (水) 15:50:12};
- あ,列に並べるのね。cbind(unname(c(by(d$value, d$date%/%100, mean)))) でどうぞ。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-12-31 (水) 17:05:30};
- 河童さんありがとう.もっと早くから知っていたらずいぶん楽ができたと思いました。得られた結果に,cbind(   )をつけるだけなんですね。それにしてもRは少ない命令で良く仕事をしてくれます。 -- [[はなちゃん]] &new{2014-12-31 (水) 22:29:38};

#comment

**caretの使用について [#g2aaa257]
>[[ランティス]] (2014-12-17 (水) 19:21:21)~
~
初歩的な質問だったら申し訳ありません。~
過去ログを検索したところ、同様の症状が見られなかった為、質問させていただきます。~
caretパッケージをインストールした後、libraryコマンドを使用してパッケージを使用できる状態にしようとしたところ以下のエラーが発生しました。~
環境:
 OS windows 7 64bit
 Rver: 3.1.2
コード:
 install.packages("caret", dependencies = T)
 library(caret)
エラー:
 library(caret)
  要求されたパッケージ lattice をロード中です 
 Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) : 
    ‘minqa’ という名前のパッケージはありません 
 Error:  ‘caret’ に対するパッケージもしくは名前空間のロードが失敗しました 
行った対応:~
? install.packagesを使用して再度~
? GUIのInstallPackagesで再インストール~
? library()コマンドでライブラリー内にcaretがあるか確認(ありました。)~
~
以上です。~
よろしくお願い致します。~

//
- 「‘minqa’ という名前のパッケージはありません」といわれているのだから,「library()コマンドでライブラリー内にcaretがあるか確認(ありました。)」は意味がありませんね。minqa があるかないを確認してください。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-12-18 (木) 08:17:39};
- 返信ありがとうございます。確認したところ、「minqa」が無かった為installを行ったところ、無事caretが利用できる事を確認しました。参考書では特にこれらのパッケージをインストールするコードは書いて無かったのですが、互いに参照し合うパッケージもあるのですね・・・。勉強になりました。ありがとうございます! -- [[ランティス]] &new{2014-12-18 (木) 10:27:52};
- dependencies は install.packages の中で,解決するように指定している(つもり)でしょう。ただ,dependencies = T とやってしまっているので,T がその時点でなんだったのか不明なので,依存関係を解決できなかったのでしょう。TRUE を T と省略してしまったのが原因かもしれないということです。(いずれにしろ,時間の節約のために,エラーメッセージや,引数での指定が何を意味しているかもう少し考えるようにしましょう) -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-12-18 (木) 19:47:19};
- 補足の説明ありがとうございます。エラー内容を読めば解決できた問題でしたね・・・。今後は参考書のサンプルコードを鵜呑みにせず、意味を解いていきたいと思います。 -- [[ランティス]] &new{2014-12-19 (金) 11:45:55};

#comment

**plotMeans() {Rcmdr}で作成したグラフ内の凡例編集について [#g1654d36]
>[[おこめ]] (2014-12-17 (水) 16:06:46)~
~
パッケージRcmdrを読み込んだのちplotMeans() を用いて2つの処理についての結果をグラフ化しました。~
その際自動で凡例も挿入されるのですが、この凡例の編集(位置やフォントサイズ変更)がどうしてもできません。~
また、legend() を用いると新たに別の凡例がグラフ内に挿入されてしまいます。~
~
ぞ同挿入の凡例について、唯一凡例タイトルだけは~
~
plotMeans(x$測定値,x$処理1,x$処理2,error.bars="se",legend.lab="xxx")~
~
と書くことで変えることができました。~
ですが特に編集したいフォントサイズについては編集方法がまったくわかりません。~
検索していろいろ調べたのですが手がかりがつかめませんでした。~
~
この自動で挿入される凡例の編集方法についてアドバイスいただけませんでしょうか。~
どうぞよろしくお願いします。~

//
- やはりRcmdrだと回答がありませんね。plotMeans()の定義を見ると凡例のpchとcol以外は固定されており、ユーザの操作で変更できるものではありません。Rcmdrのユーザ層は凡例の位置やフォントサイズを変更するような層ではないのでしょう。凡例を自由に変更したいのであれば、Rcmdrを経由するのではなく普通にRを使えばよいと思います。例えば下記のようにプロットするとか(欠損値に対応していないので注意)。 --  &new{2014-12-19 (金) 11:55:07};
 data(Moore, package="car")
 interaction.plot(response = Moore$conformity, x.factor = Moore$fcategory,
                  trace.factor = Moore$partner.status, pch = 19,
                  col = 2:3, type = "b", lty = 1:2, legend = FALSE,
                  ylim = c(0, 25))
 i <- interaction(Moore$fcategory,Moore$partner.status)
 m <- by(Moore$conformity, i, mean)
 se <- by(Moore$conformity, i, function(x){sd(x)/sqrt(length(x))})
 n1 <- nlevels(Moore$fcategory)
 n2 <- nlevels(Moore$partner.status)
 arrows(rep(1:n1, n2), m - 1.96 * se, rep(1:n1, n2), m + 1.96 * se,
        col = c(rep(2, n1), rep(3, n1)), code = 3, angle = 90,
        length = .1)
 legend("topleft",                       #位置
        levels(Moore$partner.status),
        cex = 2,                         #フォントサイズ
        pch = 19,
        pt.cex = 1,
        col = 2:3, lty = 1:2, bty = "n")
#ref(plotMeans01.png);
- ありがとうございます!とても勉強になりました。凡例も編集したいので、Rで思い通りにグラフを描けるようにきちんと勉強します。 -- [[おこめ]] &new{2014-12-20 (土) 15:55:36};

#comment

**glmmMLの後にstepAIC [#p7efe3f3]
>[[lin]] (2014-12-15 (月) 15:44:48)~
~
glmmMLの後にstepAICを行うと~
 以下にエラー if (all(is.finite(c(n0, nnew))) && nnew != n0) stop("number of rows in use has changed: remove missing values?") : 
   TRUE/FALSE が必要なところが欠損値です
と出るのですが、glmmMLにはstepAICは出来ないのでしょうか?~

//
- 少なくとも,あなたのデータに対しては適用できないと考えるのが普通でしょう。&br;あなたの,実際のデータ(あるいは現象を再現できる最小限のデータが)が提示されれば,ちゃんとしたが判断が出来るでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-12-15 (月) 21:23:00};
- 質問者ではありませんが、最小限データを提示します。 --  &new{2014-12-16 (火) 17:23:25};
 > dat <- data.frame(y = rbinom(100, prob = rep(runif(20), rep(5, 20)), size = 1), x1 = rnorm(100), x2 = rnorm(100), id = factor(rep(1:20, rep(5, 20))))
 > stepAIC(glmmML(y ~ x1 + x2, data = dat, cluster = id))
 Start:  AIC=129.09
 y ~ x1 + x2 
 
  以下にエラー if (all(is.finite(c(n0, nnew))) && nnew != n0) stop("number of rows in use has changed: remove missing values?") :
    TRUE/FALSE が必要なところが欠損値です
なお、北大の久保先生の[[日記(2003年11月05日):http://hosho.ees.hokudai.ac.jp/~kubo/log/2003/1101.html]]によると「glmmML の現時点での問題点だが…ついでに当然のごとくに stepAIC() とか使えん. これは自作するしかないなあ」だそうです。10年以上前の話なので現在はわかりませんが。
- stepAIC から呼ばれる nobs.glmmML が,存在しない要素 n を取り出そうとしているので,戻り値が NULL になるので,nnew != n0 が NULL になり,エラーになる。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-12-16 (火) 17:52:37};
 > glmmML:::nobs.glmmML
 function (object, ...) 
 {
     object$n
 }
 > names(object)
  [1] "boot"                  "converged"             "coefficients"         
  [4] "coef.sd"               "sigma"                 "sigma.sd"             
  [7] "variance"              "aic"                   "bootP"                
 [10] "deviance"              "df.residual"           "cluster.null.deviance"
 [13] "cluster.null.df"       "posterior.modes"       "prior"                
 [16] "terms"                 "info"                  "call"
- > stepAIC() とか使えん. これは自作するしかないなあ. いやはやー~
自作したんですかなあ.いやはやー~
とりあえず動くようにするには,以下のようにやる。~
しかし,本当に正しいかどうかは保障しない。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-12-16 (火) 18:36:06};
 > sink("glmmML.R")
 > glmmML:::glmmML
 > sink()
作業ディレクトリに保存された glmmML.R を編集する~
 先頭に glmmML <- を加える
 glmmML <- function (formula, family = binomial, data, cluster, weights, 
 プログラムの最後の方に 1 行加える~
 末尾 1 行をコメントアウトする
     class(res) <- "glmmML"
     res$n <- nrow(data) # この行を追加
     res
 }
 # <environment: namespace:glmmML> # コメントアウト(もしくは削除)
glmmML を使う前に,source("glmmML.R") を実行する。
 > source("glmmML.R")
 > dat <- data.frame(y = rbinom(100, prob = rep(runif(20), rep(5, 20)), size = 1),
   x1 = rnorm(100), x2 = rnorm(100), id = factor(rep(1:20, rep(5, 20))))
 > stepAIC(glmmML(y ~ x1 + x2, data = dat, cluster = id))
 Start:  AIC=132.29
 y ~ x1 + x2
 
        Df    AIC
 - x1    1 131.06
 <none>    132.29
 - x2    1 133.73
 
 Step:  AIC=131.06
 y ~ x2
 
        Df    AIC
 <none>    131.06
 - x2    1 132.27
 
 Call:  glmmML(formula = y ~ x2, data = dat, cluster = id)    
 
 
                coef se(coef)       z Pr(>|z|)
 (Intercept)  0.2267   0.4243  0.5344   0.5930
 x2          -0.4534   0.2645 -1.7144   0.0865
 
 Scale parameter in mixing distribution:  1.513 gaussian 
 Std. Error:                              0.4668 
 
         LR p-value for H_0: sigma = 0:  0.0003127 
 
 Residual deviance: 125.1 on 97 degrees of freedom
   AIC: 131.1 
 
#comment

**githubのzipファイルをダウンロードしてのインストール [#ne605961]
>[[時計]] (2014-12-15 (月) 15:09:47)~
~
お世話になります。~
標記につきまして、devtool::install_githubがプロキシの関係で使えないので、zipファイルをダウンロードして、パッケージをインストールしています。~
以前、ggbiplotをインストールしたことがあるのですが、やり方を失念してしまいました。~
Google先生に聞いてみても、うまく、記事を捕まえきれません。~
お忙しいところご迷惑おかけいたしますが、どうぞご教授ください。~

//
- すみません、自己解決しました。パッケージに同梱されている。Rstudioのプロジェクトファイルを開いて、Rstudioのbuiltでいけました。ご迷惑おかけいたしました。 -- [[時計]] &new{2014-12-16 (火) 15:35:45};

#comment

**qccでの管理図表示における横軸について [#ece7b1d8]
>[[QCUSER]] (2014-12-03 (水) 18:20:35)~
~
qccを用いて管理図を表示させることを試みています。~
qccコマンドの使用方法について質問させてください。~
~
質問概要
 qcc.groups(data , sample)
にてグループ化したmatrixを元にqccで管理図を表示する場合、横軸にデータ値のサンプル指標(第二引数sampleの値)を表示することはできますでしょうか?~
~
例~
タブ区切りのファイル「01_INPUT.txt」にロット、data01という列が存在した場合
 inputdata <- read.table("01_INPUT.txt", header=TRUE, sep = '\t')
 attach(inputdata)
 samplegrp <- qcc.groups(data01, ロット)
によってマトリクス「samplegrp」が生成できます
 > samplegrp
  305-0 306-0 307-0 308-0 309-0 310-0 311-0 312-0 313-0 314-0 315-0 316-0
  [1,] 52.89 52.93 53.06 53.06 53.02 53.08 53.12 52.95  52.8 52.93 52.95 53.02
  317-0 318-0 319-0 320-0 321-0 322-0 323-0 324-0 325-0 326-0 327-0 328-0
  [1,] 53.02 52.91 52.97    53 53.07 53.09 53.09 53.04 53.04 53.04 53.08  53.1
 :
このマトリクスを用いてqccコマンドにより管理図が表示されます
 qcc(samplegrp, type="xbar.one", nsigmas=3, title="X管理図")
しかしながら、"ロット"(上記サンプルデータでは'305-0'や'306-0')を横軸に表記する手段がわからない状態です。~

//
- 管理図のこととか qcc とか,私にはよくわかりませんが
 qcc(samplegrp[1,], type="xbar.one", nsigmas=3, title="X管理図")
としたときに出力される図でよいんでしょうか?? -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-12-03 (水) 19:06:22};
- 即答頂きありがとうございました。アドバイス頂いた通りの方法で思ったグラフ(管理図)を表示することができました。 -- [[QCUSER]] &new{2014-12-03 (水) 19:53:01};

#comment

**Rの出力について [#lccfe5cf]
>[[Ryo]] (2014-12-02 (火) 17:38:50)~
~
Rの仕様で計算結果が長い場合、ウインドウの大きさに合わせて結果が区切られたりします。それを区切らせないで結果を表示することは可能でしょうか。~
(Rの結果の表示のウインドウの大きさを変更できますか?)~
ABC~
DEF~
GHI~
ではなくて~
ABCDEFGHI~
とtxtに保存したいです。~
宜しくお願いします。~

//
- 表示と保存は別物ですが?また,1行の表示桁数を増やす必要があるなら,options(width=お好きな数字) とすればよいだけですよ。? options として,ご覧じろ。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-12-02 (火) 21:06:22};
- 河童の屁は,河童にあらず,屁である。 さん、出来ました。ありがとうございました! -- [[Ryo]] &new{2014-12-02 (火) 22:35:05};

#comment

**関数"RMeCabDf"を見つけることができません。 [#r22d15e6]
>[[初心者X]] (2014-11-25 (火) 23:59:08)~
~
 # library(RMeCab)
 Q1 <- RMeCabDF(dat, 3)
のようにしたら題名のようにエラーになりました。~
datの中身は、ここでは書いていませんが代入しております。~
~
どうしたらいいのでしょうか?~

//
- 関数がないと言われているのだから,library 関数が正しく機能していないとか,RMeCab 自体が正しくインストールできていないとか。&br;library(RMeCab) がコメントアウトされているからというような単純なことじゃないわけですね。&br;だとすれば次のチェックですが ,RMeCab は,正しくインストールされているんですか? -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-11-26 (水) 00:18:46};

#comment

**heatmapでの色の割り振りについて [#c2a80eed]
>[[kana]] (2014-11-20 (木) 16:11:13)~
~
heatmap関数を使っているのですが、ある一つの要素の値が突出して高いために、他の要素のカラーの違いが見分けられません・・・~
「ある値以上では色が一定、それ以下はグラデーションで表示」にしたいのですが、どのようにしたら良いのか教えてもらえると助かります。~

//
- よくわからないですが,その「ある一つの要素の値」をほどほどの値に変換してから図を描くというので十分では? -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-11-20 (木) 18:19:32};

#comment

**パネルデータでのエラー [#ga7c3b0d]
>[[も]] (2014-11-19 (水) 17:12:27)~
~
R超初心者です。Rcmdr(Rコマンダー)を使っています。~
プーリングによるパネルデータ分析を試みているのですが、データ読み込み後
 library("plm")
 res_po <- plm(従属変数 ~ 独立変数A+独立変数B・・・ +独立変数X,
               data=データ名, model="pooling")
 summary(res_po)
と入力して行っています。~
ところが、Rコマンダーで「エラー」とだけ表示されてしまい、それが何のエラーかもわからないでいます。~
他のデータセットではこれでパネルデータ分析できたのですが、なぜこちらではできないのでしょうか。~
データセット自体は数値以外は入力されていません。~

//
- 「なぜこちらではできないのでしょうか」といわれても,「こちらのデータ」がどんなのか分からないので,回答不能でしょう。&br;上の「フィアル添付」で,データをアップロードしてみればいかが?&br;OS, R, Rcommander のバージョンを明記することも忘れずに。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-11-19 (水) 19:18:05};

#comment

**gsub で _ を . に変えたい [#f4ea0fb3]
>[[かな]] (2014-11-15 (土) 03:33:38)~
~
"test_1", "test____2" など 数が不定な _ を全て1つの . に変えたいと思います。 "test.1" "test.2" としたいということです。~
 gsub('[_]{+}', '.', c("test_1", "test____2"))
とやってみましたが、できあがりの読点の数が1つになりません。ご教示よろしくお願いします。~

//
- gsub('_+', '.', c("test_1", "test____2")) でしょう(' と " はを使い分ける必要はないですけど)&br;[_] でもいいけど,冗長。{+} は完全に誤用。{1,} ならよいけど,それも冗長。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-11-15 (土) 08:09:36};
- Thank you very much! -- [[かな]] &new{2014-11-27 (木) 02:27:36};

#comment

**メモリ上限について [#qc2492f3]
>[[3M]] (2014-11-13 (木) 10:18:27)~
~
Windows 7 64bit版でRを使いたいのですが、Rが使用できるメモリの上限はいくつになるのでしょうか。32bit版と同じ2GBでしょうか。~
~
宜しくお願いします。~

//
- help("Memory-limits") を参照 --  &new{2014-11-13 (木) 13:43:56};
- ありがとうございます。8TBまで搭載できるとは驚きました。そこまでたくさん搭載することはないと思いますが。 -- [[3M]] &new{2014-11-13 (木) 16:29:40};

#comment

**【ベン図】データサイズを領域の面積に反映する [#o7b52d26]
>[[Steps]] (2014-11-12 (水) 15:10:04)~
~
はじめて,投稿をさせて頂きます。~
~
RでVenn Diagramを作成したいのですが,下記のように,
 library(VennDiagram)
    draw.triple.venn(10,5,4,2,3,1,1, ind=TRUE, scaled=TRUE)
と【scaled=TRUE】としてもデータサイズを領域の面積に反映することができません。~
~
どのようにすれば,データサイズを反映した円のサイズにすることができるのでしょうか?~
よろしくお願いいたします。~

//
- 円を使う限り,データサイズを面積に反映することは不可能でしょう。少なくともどんなデータサイズであっても面積に反映できるということはないでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-11-12 (水) 17:02:35};
- ヘルプには「N.B. General      scaling for three-set Venn diagrams are disabled due to      potentially misleading visual representation of the data.  To      re-enable, assign any value to variable ‘overrideTriple’.」と書かれており、実際、draw.triple.vennの中を見ると下記のように半径を決めています。 --  &new{2014-11-12 (水) 17:09:18};
    if (!exists("overrideTriple")) {
        r1 <- sqrt(100/pi)
        r2 <- r1
        r3 <- r1
    }
    else {
        r1 <- sqrt(area1/pi)
        r2 <- sqrt(area2/pi)
        r3 <- sqrt(area3/pi)
    }
- あ,「3つの円の面積」がサンプルサイズを反映するようにということか。でも,あんまり,メリットなさそう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-11-12 (水) 17:14:23};
- 質問者のニーズによっては、メリットがあることもあるかも。--  &new{2014-11-12 (水) 17:56:28};
 > overrideTriple <- TRUE
 > grid.newpage(); draw.triple.venn(100,150,200,20,30,10,1)
#ref(draw.triple.venn.png);
draw.triple.venn()は作りが甘く、中でハードコーディングが散見され、サンプルの組み合わせ次第では、大きさは変化しません。面積に対応させたベン図描画は、隠し機能程度に捉えた方がよいと思います。

#comment

**多次元尺度構成法(isoMDS)で扱えるデータ件数について [#eca47fff]
>[[ゆき]] (2014-10-26 (日) 13:35:40)~
~
初めまして。~
Rの多次元尺度構成法で扱えるデータ件数について質問があります。~
6万件のデータ間の類似度(小数)をインプットにして多次元尺度構成法(isoMDS)を実行したところ、以下のようなエラーが表示されスクリプトが終了しました。
 invalid value of 'n'
isoMDSは以下のような呼び出しをしております。
 a <- read.csv(input, h=T, as.is=T, row=1, check.names=F)
 mds <- isoMDS(a, trace=F)
エラーメッセージをもとにgoogleで検索していたら、isoMDSの中から実行されているcmdscaleにデータ件数のチェックが入っており、46340件を超えると終了しているようです。~
(http://code.metager.de/source/xref/gnu/R/src/library/stats/R/cmdscale.Rの43行目)
 if(is.na(n) || n > 46340) stop("invalid value of 'n'")
isoMDS以外ではどうかと思い、sammon、metaMDSでも同じデータをインプットにして試してみたのですが、上記のcmdscaleの件数チェックでひっかかり終了となってしまいました。~
Rの関数を使って多次元尺度構成法を行う場合、46340件以上のデータを扱う方法はあるのでしょうか?~
よろしくお願いします。~

//
- どうしても分析をしたいのであれば,if(is.na(n) || n > 46340) stop("invalid value of 'n'") を無効にする,あるいはあなたの場合,少なくとも n > 60000 とかにすればよいだけですが,はたしてそのようにしたとき,メモリーの制約に触れないかどうかは私にはわかりません。Windows の場合は,普通の UNIX の場合より条件が緩いのか強いのかも分かりません。&br;60000 ともなれば,分析結果を表示・解釈するのもかなりの困難が予想されると思いますが,そのあたりは大丈夫ですか?試しに60000のサンプルから46340程度を無作為抽出して,そのデータを分析してみて,計算時間がどれくらいになるのか,結果がどんな風になるか,どんな風に表示されるのか,などなど,を試してみるのも,よい経験になるのではないでしょうか?&br;老婆心ながら FALSE/TRUE を F/T と略記する癖は直しておいた方がよいでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-10-26 (日) 20:02:58};
- ひとまずif文の制限を緩くして検証してみるしかないのですね。これまで測定してきた結果から推測すると、60000件だと計算には1日くらいかかると想定しています。制限をはずして実行してみて、結果がどうなるかも含めて確認をしてみます。 また、TRUE/FALSEの書き方についてもご指摘いただき、ありがとうございます。今後は注意します。 お返事いただき、ありがとうございました。 -- [[ゆき]] &new{2014-10-27 (月) 07:36:14};
- 46340と言うのは 要素数2^31-1に収まる行列の行および列になります. これを越えると無関係のデーターを参照(結果はゴミ)したり落ちたりします. RのBLAS,LAPACKはint4(32bit)固定なので, ご自分でフォートラン例えばgfortranなら`-fdefault-integer-8' とかをBLAS&LAPACKに指定して作ったライブラリを用意して固有値分解を行うと言ったような事をしないとならないと思います. -- [[なかま]] &new{2014-10-27 (月) 16:26:25};
- 46340の制限は、BLAS&LAPACKが影響しているのですね。情報をご提供いただき、ありがとうございます。 -- [[ゆき]] &new{2014-11-05 (水) 09:27:37};

#comment

**CPUのコアについて [#q12f3fc7]
>[[こあら]] (2014-10-17 (金) 08:29:34)~
~
お世話になります。Rのコアへの割り当てについて疑問があります。~
~
デュアルコアのCPUを搭載したパソコンでRを使用しているのですが、Rはひとつのコアしか使用しないという話を伺いました。では、Rを2つ起動するとひとつずつのコアを使うことになるのでしょうか。それともひとつのコアを2つのRで共有するのでしょうか。~
~
宜しくお願いします。~

//
- Linux環境では2つ起動するとひとつずつ使っているように見えますが、OSが制御している部分なので他のプロセスの状況によっては異なるかもしれません。multcoreパッケージを使ったり、snowパッケージでtype="SOCK"のクラスターを組んだりすると確実にひとつずつ使う計算ができると思います --  &new{2014-10-28 (火) 06:34:50};

#comment

**パッケージplsのCVのkは変更可能? [#i105edcd]
>[[えーけん]] (2014-10-16 (木) 16:21:37)~
~
初めまして。~
Windows7 で R x64 3.1.1を使用しています。~
~
現在、Rでplsを実行しておりますが、~
データのサンプル数によって、クロスバリデーションの分割数kを変更したいのです。~
それは可能でしょうか?可能でしたら、方法を教えていただきたいです。~
よろしくお願いします。~

//
- マニュアルに書いてあるんじゃないかな?&br;If validation = "CV", cross-validation is performed. The number and type of cross-validation segments are specified with the arguments segments and segment.type. See mvrCv for details.  -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-10-16 (木) 16:30:19};
- お返事ありがとうございます。マニュアルみてみます! -- [[えーけん]] &new{2014-10-17 (金) 14:21:44};
- 正確に言うと,私が「マニュアル」といったのは「オンラインヘルプ」のこと。しかし,まあ,なんですなあ,オンラインヘルプも見ないで質問したわけ?? -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-10-17 (金) 21:45:21};
- すみません。調査不足でした。 -- [[えーけん]] &new{2014-10-18 (土) 14:36:40};

#comment

**e1071のsvm()でcrossを指定した場合のモデルについて [#cd2aabe7]
>[[ひろ]] (2014-10-13 (月) 10:21:08)~
~
初めて投稿します.~
Mac OS X上でR 3.1.0を使用しています.~
~
e1071パッケージのsvm関数について分からない点が有ります.~
e1071のソースファイルsvm.RやRsvm.cもあたりましたが,~
何となくやっていることは分かりますが,詳細まで理解することは出来ませんでした.~
なので,ここで質問させていただきます.~
詳しい方がおられましたらご教授ください.~
~
次のように 10-fold cross validationでsvmのモデルを構築するとします.~
model<-svm(factor(V1)~V2+V3+V4, data=testdata, cross=10)~
~
このとき,modelとして出力されるのは,~
10回の交差試験で最後に作られたモデルになるのでしょうか?~
それとも,10回分の交差試験の結果が反映されたモデルになるのでしょうか?~
あるいは私の考えている点がまるで見当違いでしょうか?~
~
よろしくお願いします.~

//
- svm.R や Rsvm.c なんかは,実装レベルのお話なので,計算過程は分かるかも知れないが,本質の理解の参考にならないでしょう。http://www.csie.ntu.edu.tw/~cjlin/papers/quadworkset.pdf あたりにも書いてなかったですか? --  &new{2014-10-14 (火) 21:33:06};
- 情報ありがとうございます.紹介いただいた論文を読んでみます. -- [[ひろ]] &new{2014-10-14 (火) 23:14:25};

#comment

**SIARのモデルのラン時のエラー [#p16e4474]
>[[びぎなー]] (2014-09-29 (月) 18:12:11)~
~
初めて投稿します。超初心者です。~
利用環境は、windows 8 にてR version 3.1.1と追加パッケージとしてspatstatとsiarをロードしています。~
~
テキストファイルデータの読み込み、生データのプロットはできたのですが、肝心のモデルのランでエラーが出ます。
 Selection: 2
 Run SIAR for a single group. 
 For this you will need to have input successfully some data in option 1. 
 In this instance, the target isotope file must be a two column file with
 no group label in the first column. 
  
 See the demo for more details on this function. 
 
 Press <Enter> to continue...
 Choose the size of the model run: 
 
 1: Standard
 2: Long
 3: Very long
 
 Selection: 1
  以下にエラー siarmcmcdirichletv4(data = siardata$targets,
                                   sources = siardata$sources,  : 
    (list) オブジェクトは 'double' に変換できません 
お手数ですが、ご存じ方、対応、エラー原因についておしらせいただけたらと思います。何卒宜しくお願いします。

//
- どのようなデータをどのように分析したか(コンソールにどのように入力したか)が分からないと,解答するのは難しいのでは? -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-09-29 (月) 18:54:39};
- コメントありがとうございます。Cドライブにd13Cとd15Nのデータ(txt)を3ついれています。 1つは、targetデータとして捕食者のデータ(1種に関する42個のデータ 3列43行)、もう1つはSourceデータとして検討される被食者のデータ(5列10行)、もう1つは、被食者の栄養濃縮係数のデータ(5列10行)になります。 すべてメモ帳にて、.txtファイル形式で作成しました。 データの読み込みは、siarmenu() から 1: Load to some data (run this first)を選択し、directoryを指定し、プログラムから聞かれる通り、Targetデータ、Sourceデータのファイルを指定、Fraction correctionはないので、無記載でエンターキーを押し、最後にConcentration depenencyのファイルをそれぞれの指定しました。 操作は、Richard Inger, Andrew Jackson, Andrew Parnell & Stuart著SIAR V4 (Stable Isotope Analysis in R) An Ecologist's Guideを参照しながら進めております。 できれば、対象種(1種)へのエサの寄与率(主な餌の推定)を把握するため、できれば、それぞれのエサの占有密度を見たい考えです。 どうぞ宜しくお願いします。 -- [[びぎなー]] &new{2014-09-30 (火) 09:35:45};
- これだけの情報では,追試はできませんね。しかし,メッセージに"In this instance, the target isotope file must be a two column file with no group label in the first column."といわれているのに,あなたのデータファイルには(どれがどれに対応するのかも分かりませんが)2列のものがないようですが。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-09-30 (火) 10:10:34};
- もし、真に解決を望むのであれば、架空のデータなどを用いてエラーを再現できる[[MWE:http://en.wikipedia.org/wiki/Minimal_Working_Example]] (minimal working example)の提示が必要です。また、経験則で申し上げると、トラブルの9割方は、MWEの準備を通じて自己解決するでしょう。参考:[[How to Ask for Help using R:http://jaredknowles.com/journal/2013/5/27/writing-a-minimal-working-example-mwe-in-r]] --  &new{2014-09-30 (火) 10:35:05};
- ご回答、コメントありがとうございます。Targetのファイルを2列データにして試しましたが、うまくいきませんでした。もともと複数種を見ようとしていましたので、他種のデータをいれて、1列目の項目を参照文献で指定されてあったCodeからGroupに変更して読み込み、プログラムを走らせると、走ってくれました。お尋ねする前にもっと見直す必要がある点、勉強させていただきました。お恥ずかしい限りです。お時間、お知恵を拝借して恐縮です。コメントいただいた皆様、どうもありがとうございました。取り急ぎ、お礼まで。 -- [[びぎなー]] &new{2014-09-30 (火) 11:06:22};

#comment

**page.rank.oldを使いたいがエラーが出る [#i6e78ec4]
>[[たまご]] (2014-09-22 (月) 18:17:03)~
~
初めて投稿します。R言語初心者です。~
page.rank.old(igraphというパッケージにある)という関数を使いたいのですが,以下のようなエラーが出てしまいます。
 > g <- random.graph.game(20, 5/20, directed=TRUE)
 > page.rank.old(g)
  [1] 0.06973880 0.09021035 0.03558664 0.01666512 0.07154547
      0.04793332 0.07996897 0.05023446 0.03992723 0.07147081
 [11] 0.03138601 0.02566091 0.09408276 0.04552462 0.04179698
      0.03378557 0.00750000 0.02832452 0.09572176 0.02293570
  警告メッセージ: 
 In .Call("R_igraph_pagerank_old", graph, vids - 1, directed, niter,  :
   At structural_properties.c:1379 :igraph_pagerank_old is deprecated from
     igraph 0.7, use igraph_pagerank instead
なんとかこのエラーを取り除きたいのです。よろしくお願いします。~
Rのバージョン3.1.1~
igraphのパッケージは最新~
OS windows7~

//
- "use igraph_pagerank instead" といわれているのだから,素直に従うのが吉&br;単純に,そのメッセージを表示させたくないだけならば,事前に options(warn=-1) とでもしておく -- [[河童の屁は,河童にあらず,屁である。]] &new{2014-09-22 (月) 19:04:10};
- それは「エラー」ではなく「警告」ですよ。両者の意味は異なります。IT関係の話をするときには両者を厳密に区別して話をしなければなりません。一般的に、警告メッセージは、無視しても問題がありませんが、エラーメッセージは問題があります。また、警告メッセージを表示するかどうかは、好みの問題です。表示させたくないなら、河童さんの助言に従うことになります。 --  &new{2014-09-23 (火) 15:13:38};
- 回答ありがとうございました。この場合はプログラム自体は行われているのですね。 -- [[たまご]] &new{2014-09-24 (水) 02:55:55};
- leafletでのコロプレス図とマーカーについて -- [[TAKA?]] &new{2016-10-23 (日) 15:47:46};
- leafletでのコロプレス図とマーカーについて(2) -- [[TAKA?]] &new{2016-10-27 (木) 07:40:18};
- 目的はrstanの実行なのですが、いろいろやった結果、library(rstan)で、「1:  パッケージ ‘rstan’ はバージョン 3.3.3 の R の下で造られました   2:  パッケージ ‘ggplot2’ はバージョン 3.4.0 の R の下で造られました   3:  get(Info[i, 1], envir = env) で:  internal error -3 in R_decompress1  エラー:  パッケージ ‘ggplot2’ をロードできませんでした 」がでます。しかも、install.packages("ggplot2")に「 パッケージ ‘ggplot2’ が利用できません (for R version 3.3.1) 」なってしまいます(これまでは問題なくggplot2は使ってましつた)。古いggplot2をDLてやっても、「パッケージ ‘ggplot2_2.1.0.tar.gz’ のインストールは、ゼロでない終了値をも」がでます。インストールの し直しはやってみました。Rは3.3.1です。解決策はありますか。 -- [[こんにちは]] &new{2017-03-26 (日) 01:26:42};

#comment

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS