#author("2021-08-20T06:11:21+09:00","","")
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 (初級者コース) 過去の目次]]} --- 今までの 16 個の書庫の参照&br;

----

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

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

----

&aname(sinki);

COLOR(green){●● 新規投稿 ●●}

まずは,「[[投稿における注意事項]]」を読んで,それに従ってください。~
COLOR(red){これに従わない場合には,回答が得られにくい場合があります。} 

#article
**apply系関数でfunに線形回帰lmが適用可能な関数 [#i596a54f]
>[[TY]] (2020-01-07 (火) 15:59:04)~
~
シミュレーションで同じ関数を繰り返し(10^5~10^6回程度)実行する場面を想定しています.~
例えば,以下のsample_dataでREP毎にlm(y~x)を実行したいです.~
for文で実行することはできるのですが,一般にapply系関数の方が実行が速いと聞き,~
探しています.apply系関数に関する知識は,tapply関数にmean関数を適用できる,~
 tapply(sample_data$y, sample_data$REP,mean)~
程度のレベルです.~
~
【sample_data】~
      y    x REP
1   133  3.9   1~
2    81 -2.3   1~
3   104 -1.2   1~
4    89  0.7   1~
5   142  4.0   1~
6    74 -2.9   1~
7   140  3.9   1~
8   170  4.4   1~
9   128  1.6   1~
10  107  1.2   1~
11   49 -4.3   2~
12   79 -2.9   2~
13   77 -3.2   2~
14  125  1.8   2~
15   82 -1.1   2~
16  132  2.6   2~
17   99 -0.0   2~
18  140  2.1   2~
19  140  4.9   2~
20   88 -1.1   2~

//

#comment

**オブジェクト###がありません。というエラー [#ke961c31]
>[[univ]] (2019-12-16 (月) 23:52:06)~
~
OECDによる国際調査PIAACを分析しているのですが、table作成時にエラーが出て困っています。「オブジェクト###がありません」というエラーへの対処を教えていただければ幸いです。よろしくお願いいたします。
 library("intsvy")
 data("piaac", package= "PIAAC")
 ptable <- piaac.table(variable = "AGEG10LFS", data = piaac)
を実行すると、
 data.frame(table(data[[variable]][drop = TRUE]), Percentage = round(as.numeric(tabtot),  でエラー: オブジェクト 'tabtot' がありません
とエラーが出ます。~
tabtotはintsvy.table関数内で定義されているようです。
 intsvy.table <- function (variable, by, data, config)
 {
     table.input <- function(variable, data, config) {
         if (sum(is.na((data[[variable]]))) == length(data[[variable]])) {
             result <- data.frame(NA, Freq = 0, Percentage = NA, 
                 Std.err. = NA)
             names(result)[1] <- variable
             return(result)
         }
         if (config$parameters$weights == "JK") {
             R.wt <- sapply(1:max(data[[config$variables$jackknifeZone]]), 
                 function(x) ifelse(data[[config$variables$jackknifeZone]] == 
                   x, 2 * data[[config$variables$weight]] * data[[config$variables$jackknifeRep]], 
                   data[[config$variables$weight]]))
             if (isTRUE(config$parameters$varpv1)) {
                 tabrp <- as.matrix(sapply(1:ncol(R.wt), function(x) percent(as.factor(as.numeric(data[[variable]])), 
                   total = FALSE, weights = R.wt[, x])))
                 tabtot <- percent(as.factor(as.numeric(data[[variable]])), 
                   weights = data[[config$variables$weight]], 
                   na.rm = TRUE, total = FALSE)
                 if (length(tabtot) != 1) {
                   tabse <- apply((tabrp - tabtot)^2, 1, sum)^(1/2)
                 }
                 else {
                   tabse <- 0
                 }
             }
             else {
                 R.wt2 <- sapply(1:max(data[[config$variables$jackknifeZone]]), 
                   function(x) ifelse(data[[config$variables$jackknifeZone]] == 
                     x, 2 * data[[config$variables$weight]] * 
                     ifelse(data[[config$variables$jackknifeRep]] == 
                       1, 0, 1), data[[config$variables$weight]]))
                 R.wt <- cbind(R.wt, R.wt2)
                 tabrp <- as.matrix(sapply(1:ncol(R.wt), function(x) percent(as.factor(as.numeric(data[[variable]])), 
                   total = FALSE, weights = R.wt[, x])))
                 tabtot <- percent(as.factor(as.numeric(data[[variable]])), 
                   weights = data[[config$variables$weight]], 
                   na.rm = TRUE, total = FALSE)
                 if (length(tabtot) != 1) {
                   tabse <- (apply((tabrp - tabtot)^2, 1, sum)/2)^(1/2)
                 }
                 else {
                   tabse <- 0
                 }
             }
         }
         if (config$parameters$weights == "BRR") {
             tabrp <- as.matrix(sapply(1:config$parameters$BRRreps, 
                 function(i) percent(as.factor(as.numeric(data[[variable]])), 
                   total = FALSE, weights = data[[paste(config$variables$weightBRR, 
                     i, sep = "")]], na.rm = TRUE)))
             tabtot <- percent(as.factor(as.numeric(data[[variable]])), 
                 weights = data[[config$variables$weightFinal]], 
                 na.rm = TRUE, total = FALSE)
             if (length(tabtot) != 1) {
                 tabse <- sqrt(rowSums((tabrp - tabtot)^2)/20)
             }
             else {
                 tabse <- 0
             }
         }
         result <- data.frame(table(data[[variable]][drop = TRUE]), 
             Percentage = round(as.numeric(tabtot), 2), Std.err. = round(tabse, 
                 2))
         names(result)[1] <- variable
         return(result)
     }
     if (missing(by)) {
         output <- table.input(variable = variable, data = data, 
             config = config)
     }
     else {
         for (i in by) {
             data[[c(i)]] <- as.character(data[[c(i)]])
         }
         output <- ddply(data, by, function(x) table.input(data = x, 
             variable = variable, config = config))
     }
     class(output) <- c("intsvy.table", "data.frame")
     output
 }
環境は
 R version 3.6.2 (2019-12-12)
 Platform: x86_64-w64-mingw32/x64 (64-bit)
 Running under: Windows 10 x64 (build 17134)
 Matrix products: default
 locale:
 [1] LC_COLLATE=Japanese_Japan.932  LC_CTYPE=Japanese_Japan.932   
 [3] LC_MONETARY=Japanese_Japan.932 LC_NUMERIC=C                  
 [5] LC_TIME=Japanese_Japan.932 
 attached base packages:
 [1] grid      stats     graphics  grDevices utils     datasets  methods  
 [8] base     
 other attached packages:
  [1] ggplot2_3.2.1    svyPVpack_0.1-1  survey_3.36      survival_3.1-8  
  [5] Matrix_1.2-18    memisc_0.99.20.1 MASS_7.3-51.4    lattice_0.20-38 
  [9] sca_0.9-0        remotes_2.1.0    intsvy_2.4      
 loaded via a namespace (and not attached):
  [1] Rcpp_1.0.1          pillar_1.4.2        compiler_3.6.2     
  [4] RColorBrewer_1.1-2  plyr_1.8.5          base64enc_0.1-3    
  [7] tools_3.6.2         rpart_4.1-15        digest_0.6.23      
 [10] checkmate_1.9.4     htmlTable_1.13.3    jsonlite_1.6       
 [13] tibble_2.1.1        gtable_0.3.0        pkgconfig_2.0.3    
 [16] rlang_0.4.2         DBI_1.0.0           rstudioapi_0.10    
 [19] xfun_0.11           gridExtra_2.3       withr_2.1.2        
 [22] stringr_1.4.0       knitr_1.26          repr_1.0.1         
 [25] cluster_2.1.0       htmlwidgets_1.5.1   mitools_2.4        
 [28] nnet_7.3-12         data.table_1.12.8   reshape_0.8.8      
 [31] foreign_0.8-72      latticeExtra_0.6-28 Formula_1.2-3      
 [34] magrittr_1.5        backports_1.1.5     scales_1.0.0       
 [37] Hmisc_4.3-0         htmltools_0.4.0     splines_3.6.2      
 [40] colorspace_1.4-1    stringi_1.4.3       acepack_1.4.1      
 [43] lazyeval_0.2.2      munsell_0.5.0       crayon_1.3.4       
です。~
OSはwindows10 64bitです。~

//
- tabtot は intsvy.table 内で定義されている table.input で定義され使われるのですが,config$parameters$weights が "JK" か "BRR" の場合だけに定義されます。しかし,piaac を分析するときには "mixed_piaac" になっているので tabtot も tabse も定義されません。よって,「オブジェクト 'tabtot' がありません」となりますね。
 if (config$parameters$weights == "JK") {
     tabtot <-  ...
 }
 if (config$parameters$weights == "BRR") {
     tabtot <- ...
 }
原因はわかりましたが,回避方法はないでしょう。だって,table.input を書き直さないといけないですが,どのように書き直すか知らないから。 --  &new{2019-12-17 (火) 13:49:00};
- config$parameters$weights を "mixed_piaac" ではなく "BRR" だと偽れば,一応の結果は得られる。ただ,その偽り方があまり綺麗じゃない。~
piaac.table2 を定義する。
 library("intsvy")
 
 piaac.table2 = function (variable, by, data, export = FALSE, name = "output",
   folder = getwd())
 {
   piaac_conf = list(
     variables = list(
       weightFinal = "W_FSTUWT",
       weightBRR = "W_FSTURWT"),
     parameters = list(
       BRRreps = 80,
       weights = "BRR"
     )
   )
   output <- intsvy.table(variable, by, data, config = piaac_conf)
   if (export) {
     write.csv(output, file = file.path(folder, paste(name,
       ".csv", sep = "")))
   }
   return(output)
 }
使用例は以下のように。
 > piaac.table2(variable = "AGEG10LFS", data = piaac)
    AGEG10LFS  Freq Percentage Std.err.
 1 24 or less 29242      19.17        0
 2      25-34 28779      18.87        0
 3      35-44 30705      20.13        0
 4      45-54 31338      20.55        0
 5    55 plus 32450      21.28        0
しかし,piaac.table2 はもともとこんなに遅いのか?~
単に table(piaac$AGEG10LFS) とすれば,爆速で出る。後はパーセントを付けるだけだけでは?もっとも,by とかを指定するときには面倒になるのかもしれないけど。 --  &new{2019-12-17 (火) 16:28:10};
- ggplot2 もそうだけど,ある特定の条件下での分析手法というのは,ぴったり行くと便利この上ないけど,初心に返ればどんな条件にも対処できる(対処しなければならない)ということに尽きるのではないか? --  &new{2019-12-17 (火) 21:35:57};
- まだ,反応がないようだけど,緊急事態ではないようなのでこちらも,いいかげんな対応でやり過ごすか。&br;まあ,やりたいことをやる関数を書く方が速いような気がするので,以下のようjな関数を書いてみた(いや,保証はしないよ...あたりまえでしょ)
 piaac.table3 = function(variable, digits = 2) {
   n = table(piaac[, deparse(substitute(variable))])
   total = sum(n)
   percent = round(n / total * 100, digits)
   df = data.frame(c(n), c(percent))
   colnames(df) = c("n", "percent")
   return(df)
 }
これを使ってやってみるとね,以下のような結果になるよ。
 > piaac.table3(AGEG10LFS)
                n percent
 24 or less 29242   19.17
 25-34      28779   18.87
 35-44      30705   20.13
 45-54      31338   20.55
 55 plus    32450   21.28
 > piaac.table3(GENDER_R)
            n percent
 Male   72241   47.37
 Female 80271   52.63
どうだかね???&br;
オートマ車しかしらない人がマニュアル車の運転席に座らされたら,手も足も出ない。そんなところかな。 --  &new{2019-12-17 (火) 22:32:11};
- 長々と状況説明して help を求めた割りには,その後なんの反応もないというのは,何なのか?&br;急いでないということか。じゃあ,ゆっくりやればよい。 --  &new{2019-12-18 (水) 22:19:48};
- まだ反応がないなあ --  &new{2019-12-19 (木) 22:40:14};
- もう,無視しているというか,見てないんだろうな。 --  &new{2019-12-20 (金) 20:56:25};
- まあ,今後,こいつからなんか質問があっても,答えないようにしよう。 --  &new{2019-12-20 (金) 21:35:39};
- まあ,今後,こいつからなんか質問があっても,答えないようにしよう。 --  &new{2019-12-21 (土) 21:35:39};
- >しかし,piaac.table2 はもともとこんなに遅いのか?>ウエイト計算をやってるのでは --  &new{2021-08-20 (金) 06:11:21};

#comment

**Rbiipsについて [#a0e8be87]
>[[tkzhsymd]] (2019-12-16 (月) 15:13:48)~
~
Rstdio1.2.5でベイズ推定汎用ソフトBiipsをインストールしました。https://biips.github.io/install/から所定のファイルをダウンロードしてinstall.packages()にかけたのですが、以下の警告が出ました。~
package ‘Rbiips_0.10.0.zip’ is not available (for R version 3.5.3)~
~
警告だけだから行けたのかと思ってlibrary(Rbiips)としたところ、~
‘Rbiips’ was installed by an R version with different internals; it needs to be reinstalled for use with this R version~
となり、RstdioでないR3.5.3にはインストールできます。このメッセージはRstudioでダメなのはR3.5.3にインストールされているからということでしょうか。両者は干渉しあうものでしょうか。~
R3.5.3の方は問題なくインストール、library()と行けるのですが。~

//
- R も最新バージョン3.6.2 にしてみてから,再度試みればいかが?&br;やるべき事を全部やって,万策尽きたということではないんですよね?&br;R3.5.3 は,古いよね。OS はなに? --  &new{2019-12-16 (月) 21:15:47};
- R3.6.2(OS:Windows10)での結果です。やはりエラーは出ます。 -- [[tkzhsymd]] &new{2019-12-22 (日) 09:58:27};
 install.packages("Rbiips_0.10.0.zip",dependencies=TRUE)
  パッケージを ‘C:/Users/xxx/Documents/R/win-library/3.6’ 中にインストールします
   (‘lib’ が指定されていないため)   'pkgs'から 'repos = NULL' を推測   
 パッケージ ‘Rbiips’ は無事に展開され、MD5 サムもチェックされました 
 library(Rbiips)
 エラー: package or namespace load failed for ‘Rbiips’:  
 package ‘Rbiips’ was installed by an R version with different internals;
 it needs to be reinstalled for use with this R version
#comment

**pcaMethods glmnet [#rb0604a1]
>[[つぐ太郎]] (2019-12-03 (火) 08:55:42)~
~
pcaMethodsとglmnetのパッケージが見当たりません。代替パッケージ等教えていただけないでしょうか。よろしくお願いいたします~

//
- どういうことかなあ?&br;glmnet は普通に「パッケージとデータ」メニューから見つかるし,pcaMethods は web 検索すれば bioconductor にあり,ページを見ると
 if (!requireNamespace("BiocManager", quietly = TRUE))
     install.packages("BiocManager")
 
 BiocManager::install("pcaMethods")
でインストールできるよと書いてあったりするし。&br;どちらのパッケージも,Mac OS でも Windows でも同じようにインストールできましたよ。  --  &new{2019-12-03 (火) 11:44:36};
- すみません。お手数をおかけしました。昨晩R3.5.2では探せず、今R3.6.1で見つかりました。無事両者ともDLできました。ありがとうございます。 -- [[つぐ太郎]] &new{2019-12-03 (火) 16:24:24};

#comment

**データフレームからベクトル表記へ [#r544f2d0]
>[[yoshida931]] (2019-11-20 (水) 11:13:17)~
~
以下のようなフレームを~
~
Group	pre-post	Outcome~
1	"治療前"	23.5~
1	"治療前"	21.17~
1	"治療後"	15.5~
1	"治療後"	20.5~
2	"治療前"	21.17~
2	"治療前"	11.17~
2	"治療後"	19~
2	"治療後"	20.5~
~
次のような表記に変更することは可能でしょうか?~
~
Group <- c(1,1,1,1,2,2,2,2)~
pre-post <- c("治療前","治療前","治療後","治療後","治療前","治療前","治療後","治療後")~
Outcome <- c(23.5, 21.17, 15.5, 20.5, 21.17, 11.17, 19, 20.5) ~
~
サンプルサイズが大きい場合でも一瞬でできたら助かります。~

//
- そのようなことをしなければならない理由はなんだろうか?理由によってはそんなことしなくてもよいとか,他の方法があるとかありますので,理由を述べればもう少しましな回答があるかも。&br;それはともかく,データフレームを df として,以下のようにすると一応できるけど。
 > Group <- df[,1] # 各列をベクトル変数に代入する
 > pre.post <- df[,2]
 > Outcome <- df[,3]
 > dump("Group", file="Group.R") # 変数名をダブルクオートで囲むこと(つまり,文字列で指定する)
 > dump("pre.post", file="pre.post.R") # 指定したファイルに書き出される
 > dump("Outcome", file="Outcome.R")
データフレームの各列の代入先の変数名も file 名も自由にしてよい。&br;出力ファイルを開いてみればわかるが,factor 変数は特有の形式になっている。 --  &new{2019-11-20 (水) 12:49:56};
- ありがとうございました。 お陰様でできました。  あまり深い理由はないのですが・・・ 縦に長くなるフレームより、コピーし易い・・・という 何とも単純な理由でした。 お手数お掛けいたしました。 -- [[yoshida931]] &new{2019-11-20 (水) 13:38:17};
- 何のためにコピーする?他のコンピュータに持って行く?他のプログラムに使う?そんな理由なら,コピーする必要ないでしょうに。不思議。&br;コピーするだけなら,dput で画面に表示させて,画面に表示されたものをコピペするのが簡単(もっとも,サンプルサイズが何万件というなら,そそもそも不適切だが)
 > dput(df[,1])
 c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L)
 > dput(df[,1]+0) # L がつくのを嫌がるなら次のようにすればよい
 c(1, 1, 1, 1, 2, 2, 2, 2)
「変数名 <- 」と入力してから,コピペする。 --  &new{2019-11-20 (水) 14:08:34};
- ご丁寧ありがとうございます。助かります。 -- [[yoshida931]] &new{2019-11-20 (水) 16:02:00};

#comment

**Rstudioでの列数が50を超えるものの呼び出し方 [#g115bafa]
>[[かもめのジョナ子]] (2019-11-17 (日) 23:20:21)~
~
read.csvで読み込んだデータ(列数150)を呼び出す際に,50未満の列数のものはx[3]やx["変数名"]で呼び出せますが,50以上のものですとx[55]と書くと「未定義の列が選ばれました」とエラーメッセージが出ます。x["変数名"]と書いた場合はデータを呼び出せます。50以上の列数のものもスムーズに呼び出せるようにするにはどのようにしたらよいのでしょうか。よろしくお願いいたします。(既出でしたら申し訳ありません。)~

//
- 「read.csv で読み込んだ」からには,データフレームですね。本当に列数 150 で読み込まれていますか?&br;dim(x) を入力すると何が出ます?2 つの数値が表示されたら,それは,データフレームの行数と列数です。2 番目の数値は 150 ですか??&br;
「50 以上の列数のものが呼び出せない」などということはありません。以下のようなテストデータでやってみればはっきりします。
 x = data.frame(matrix(rnorm(300*150), 300, 150)) # 300 行,150 列のデータフレーム
 colnames(x) = paste0("d", 1:150) # d1, d2, ..., d150 の列名を付ける
 dim(x) # 300, 150 が表示される
 head(x) # 先頭の 6 行が表示される
 x[150] # 150 番目の列の 300 個の要素が 1 行 に 1 個,300 行出力される
それでもやはりだめならば,読み込み元のデータをよく見てみる必要があるでしょう。 --  &new{2019-11-18 (月) 09:44:54};
- ありがとうございます。早速,dim(x)を入力すると[1] 113 100 とでてきます。~
行数は113です。~
画面上での数字のずれがわかる画像を添付します。~
&ref(Rstudiocol); -- [[かもめのジョナ子]] &new{2019-11-18 (月) 11:17:56};
- 改行とファイル添付を試みましたが上手にできませんでした...  -- [[かもめのジョナ子]] &new{2019-11-18 (月) 11:19:19};
-  改行は,行の最後にチルダ(小文字の 〜)を入力して,リターンキーを押して物理改行すること。&br;ファイルの添付って,画像を添付しようとしましたか?画像添付なら 半角アンパサンドref(ファイル名.png)セミコロン のようにします(いずれにしろ,「まずは,「[[投稿における注意事項]]」を読んで,それに従ってください。」と注意されているでしょう?&br;列数 150 っていっていたのに 100 とは一体なにごと。行数の 113 というのはあなたが思っているのと合っているのですか?--  &new{2019-11-18 (月) 11:51:29};
- 改行とファイル添付を試みましたが上手にできませんでした...  -- [[かもめのジョナ子]] &new{2019-11-18 (月) 12:04:24};
- ありがとうございます。こちらの投稿ルールをマスターするのがまず最初にすべきことのようです... -- [[かもめのジョナ子]] &new{2019-11-18 (月) 12:07:17};
- &ref(Rstudio.png): -- [[かもめのジョナ子]] &new{2019-11-18 (月) 12:32:50};
- ご回答いただきましてありがとうございます。画像添付のハードルが高く見ていただくことができず残念です。列数のことは不明な点は残りますが作業に支障のない状態になりましたので,ここでいったん質問を終わらせていただきます。ありがとうございました。 -- [[かもめのジョナ子]] &new{2019-11-18 (月) 12:35:02};
- 「列数のことは不明な点は残りますが作業に支障のない状態になりましたので,ここでいったん質問を終わらせていただきます」ってどういうこと?&br;聞くだけ聞いておいて詳細について語らずってのは,ひどいんじゃない?&br;そもそも,この掲示板は質問者に答えるだけではなく,あとから同じような問題を抱えた人が何か答えのヒントはないだろうかと見に来ることも考えられているのですよ。自分よがりで終わるようなら,回答するんじゃなかったねと後悔もするってもんだぁね。&br;あと,画像は別途アップロードしなくちゃ表示できませんよ。&br;ページの上部,ロゴマークの下に
 [ トップ | Tips紹介 | 初級Q&A | R掲示板 | 日本語化掲示板 | リンク集 ]
 [ 編集 | 差分 | バックアップ | 添付 | リロード ]   [ 新規 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]
ってのが,あるでしょ?その中の「添付」ってのをクリックしなさい。  --  &new{2019-11-18 (月) 13:57:29};

#comment

**バッファを割り当てることができません [#q4a5798b]
>[[ya]] (2019-11-12 (火) 16:31:37)~
~
バッファを割り当てることができません~
~
お世話になります。~
検索エンジンや過去の質問で見つからなかったので質問させていただきます。既出でしたら申し訳ありません。~
~
R consoleでパッケージをインストールしようとすると、以下の表示が出てしまいます。~
~
BiocManager::install("IlluminaHumanMethylationEPICanno.ilm10b4.hg19")~
Bioconductor version 3.10 (BiocManager 1.30.9), R 3.6.1 (2019-07-05)~
Installing package(s) 'IlluminaHumanMethylationEPICanno.ilm10b4.hg19'~
installing the source package ‘IlluminaHumanMethylationEPICanno.ilm10b4.hg19’~
~
URL 'https://bioconductor.org/packages/3.10/data/annotation/src/contrib/IlluminaHumanMethylationEPICanno.ilm10b4.hg19_0.6.0.tar.gz' を試しています ~
Content type 'application/x-gzip' length 158431882 bytes (151.1 MB)~
downloaded 151.1 MB~
~
installing *source* package 'IlluminaHumanMethylationEPICanno.ilm10b4.hg19' ...~
using staged installation~
data~
moving datasets to lazyload DB~
Error in lazyLoadDBinsertVariable(vars[i], from, datafile, ascii, compress,  : ~
バッファを割り当てることができません ~
ERROR: lazydata failed for package 'IlluminaHumanMethylationEPICanno.ilm10b4.hg19'~
removing 'C:/Users/902722/Documents/R/win-library/3.6/IlluminaHumanMethylationEPICanno.ilm10b4.hg19'~
~
~
設定環境は以下のようになります。~
~
R version 3.6.1 (2019-07-05)~
Platform: i386-w64-mingw32/i386 (32-bit)~
Running under: Windows 7 (build 7601) Service Pack 1~
~
Matrix products: default~
~
locale:~
[1] LC_COLLATE=Japanese_Japan.932 LC_CTYPE=Japanese_Japan.932 LC_MONETARY=Japanese_Japan.932 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] BiocManager_1.30.9 compiler_3.6.1 tools_3.6.1~
~
また、現在のメモリの最大割り当て数は1535MBです。~
~
バッファ値の設定を変更すればインストールできるようになるのでしょうか。もしそうなら、どのようにバッファ値の設定を行えば良いのでしょうか。~
~
どうぞよろしくお願いいたします。~

//
- > R consoleでパッケージをインストールしようとすると、以下の表示が出てしまいます。&br;
いろいろ書いてあるんだけど,そもそもの初め,あなたが入力したのはなに?&br;何を入力したかわからないのに,その結果何とかかんとかのエラーメッセージがありましただけの結果出力をつらつら書かれても,私には何が何だかわかりませんが。
 BiocManager::install("IlluminaHumanMethylationEPICanno.ilm10b4.hg19")
を入力したら,なんだかんだで,ずいぶん長い間,なんだかんだインストールしたあげく
  The downloaded source packages are in
  	‘/private/var/folders/s5/rt_bzvk53_d9w2gm5_w9gfmr0000gq/T/RtmpXxmpv8 /downloaded_packages’
   警告メッセージ: 
   install.packages(update[instlib == l, "Package"], l, repos = repos,  で: 
    installation of package ‘hexbin’ had non-zero exit status
なんていう,ぶきみなエラーメッセージを出してとまりましたけどね&br;ああ,気持ち悪い,なんか変な病気にかかったみたいで,きもちわり〜〜〜〜〜。どうしてくれます?&br;&br;もう一回やってみたら,結局以下のようで,
 > BiocManager::install("IlluminaHumanMethylationEPICanno.ilm10b4.hg19")
 Bioconductor version 3.10 (BiocManager 1.30.9), R 3.6.1 Patched (2019-09-23
  r77210)
 Installing package(s) 'IlluminaHumanMethylationEPICanno.ilm10b4.hg19'
 installing the source package ‘IlluminaHumanMethylationEPICanno.ilm10b4.hg19’
 
  URL 'https://bioconductor.org/packages/3.10/data/annotation/src/contrib/IlluminaHumanMethylationEPICanno.ilm10b4.hg19_0.6.0.tar.gz' を試しています 
 Content type 'application/x-gzip' length 158431882 bytes (151.1 MB)
 ==================================================
 downloaded 151.1 MB
 
 * installing *source* package ‘IlluminaHumanMethylationEPICanno.ilm10b4.hg19’  ...
 ** using staged installation
 ** data
 *** moving datasets to lazyload DB
 ** inst
 ** help
 *** installing help indices
 ** building package indices
 ** testing if installed package can be loaded from temporary location
 ** testing if installed package can be loaded from final location
 ** testing if installed package keeps a record of temporary installation path
 * DONE (IlluminaHumanMethylationEPICanno.ilm10b4.hg19)
 
 The downloaded source packages are in
 	‘/private/var/folders/s5/rt_bzvk53_d9w2gm5_w9gfmr0000gq/T/RtmpXxmpv8 /downloaded_packages’
どうしてくれます?(^_^;)--  &new{2019-11-12 (火) 21:53:32};
- ご回答いただきありがとうございます。&br;  入力したのは以下のコマンドです。&br;  > BiocManager::install("IlluminaHumanMethylationEPICanno.ilm10b4.hg19")&br;  出てきたエラーを以下に示します。&br;   Error in lazyLoadDBinsertVariable(vars[i], from, datafile, ascii, compress,  : &br;  バッファを割り当てることができません &br;  ERROR: lazydata failed for package 'IlluminaHumanMethylationEPICanno.ilm10b4.hg19'&br;  * removing 'C:/Users/902722/Documents/R/win-library/3.6/IlluminaHumanMethylationEPICanno.ilm10b4.hg19'&br;   The downloaded source packages are in&br;  ‘C:\Users\902722\AppData\Local\Temp\RtmpeGeGjz\downloaded_packages’&br;  Installation path not writeable, unable to update packages: boot, foreign,&br;  KernSmooth, mgcv, nlme, survival&br;  Old packages: 'Rcpp'&br;  Update all/some/none? [a/s/n]: &br;  n&br;  Warning message:&br;  In install.packages(...) :&br;  installation of package ‘IlluminaHumanMethylationEPICanno.ilm10b4.hg19’ had non-zero exit status&br;  もう一回入力したり、R studioでもインストールを試みましたが、同じエラーが出てしまいました。 -- [[ya]] &new{2019-11-13 (水) 16:20:11};
-  なんだ。Windows か。&br;Installation path not writeable, unable to update packages: boot, foreign, KernSmooth?, mgcv, nlme, survival って書かれているね。なんだっけ,普通のユーザモードではない特権モード?でやってみたら? --  &new{2019-11-13 (水) 16:58:57};
- 原因不明ですね。Installation path not writeable, unable to update packages: boot, foreign, KernSmooth??, mgcv, nlme, survival って,出たけど,他に何の問題もなく,インストールされました。 --  &new{2019-11-13 (水) 18:12:48};
- R consoleとR studioどちらにおいても管理者として実行したところ、&br; Installation path not writeable, unable to update packages: boot, foreign, KernSmooth, mgcv, nlme, survival&br; のメッセージが出なくなりました。 しかし、このメッセージが無くなった以外は上記と同じメッセージが出てしまいました。&br;  また、以下のコマンドでも試しましたが、同じエラーが出ました。&br; if (!requireNamespace("BiocManager", quietly = TRUE))&br;     install.packages("BiocManager")&br;  BiocManager::install("IlluminaHumanMethylationEPICanno.ilm10b4.hg19")&br; -- [[ya]] &new{2019-11-14 (木) 12:07:47};

#comment



**Rstudio ヘルプ画面での検索方法 [#l9e4fb4c]
>[[jj]] (2019-11-05 (火) 01:50:34)~
~
Rstudioのヘルプペインにて、虫眼鏡アイコンの検索ボックスへ移動するショートカットキーは設定可能でしょうか。~
「Ctrl+3」でヘルプへ移動後、「Ctrl+F」では、「Find in topic」の方しか選択できないようです。~
~
キーボードショートカットのヘルプ、およびModifyについても目を通したものの、発見することができませんでした。~
もしご存知の方がおられましたら、ご教示頂けると助かります。~
~
環境~
R version 3.5.3 (2019-03-11)~
Platform: x86_64-w64-mingw32/x64 (64-bit)~
Running under: Windows 10 x64 (build 18362)~

//
- コンソールで ? foo すればいいだけじゃない? --  &new{2019-11-05 (火) 23:24:45};
- お返事遅くなりました、ありがとうございます。確かにそうですね。パッケージインストール後であれば候補も表示されますし、こちら利用させて頂きます。助かりました。 -- [[jj]] &new{2019-11-10 (日) 00:49:27};

#comment

**randomForest の関数化に関して [#d7dea7fb]
>[[zstk5]] (2019-10-29 (火) 20:58:03)~
~
回答を期待する記事は原則 COLOR(red){SIZE(20){質問コーナー [[Q&A]]}} にお願いします。~
と書かれているその下に,質問するとはなんたる肝っ玉。~
投稿場所,投稿書式共に,はなはだ不適切だったので,ここにこのように再投稿させました。これだけで,原投稿者にはプレッシャーとは思うが,それは仕方ない(規則だから)~
以 下 が 投 稿 内 容。 生 暖 か い 目 で 見 て 答 え て や っ て ち ょ ! !~
* * * * * * * * * * * * * * * ~
こんにちは。~
現在、Rを使用してrandomforestを実行しているのですが下記コードを実行すると保存されるobjファイルのサイズが大きく変わってしまいます。~
(実際はもう少しデータサイズが大きく複雑なのですが同様の事象は下記コードでも発症します)~
~
違いは、randomforestを実行する部分を自分で作成した関数内においているかおいていないかの差になります。~
~
そのため処理は変わらないと考えているのですが出来上がるobjファイルのサイズが関数化している方は119KB, 関数化していないほうは61KBとなります。~
~
なぜ、関数化するとモデルのサイズが大きくなってしまうのでしょうか。~
~
原因分かる方いましたらご教示お願いいたします。~
以下サンプルコード
 ######################
 #パターン1
 ######################
 test <- function() {
 
   library(randomForest)
   
   set.seed(123)
   
   ## 実行
   rf <- randomForest(Species ~ ., data = iris,
                      proximity = TRUE, importance = TRUE)
   saveRDS(rf, file = "test.obj")
 }
 test()
 
 ######################
 #パターン2
 ######################
 
 library(randomForest)
 
 set.seed(123)
 
 ## 実行
 rf <- randomForest(Species ~ ., data = iris,
                    proximity = TRUE, importance = TRUE)
 return(iris)
 saveRDS(rf, file = "test_.obj")
 
 ---環境情報---
 OS:Windows Server2012R2(64bit)
 R:version 3.6.1
 Rstudio:

//
- str() で表示される情報中の違いは以下の ".Environment" の項目。保存される「環境」の違いでしょ...
  .. ..- attr(*, ".Environment")=<environment: 0x7fc91ecd9438> 関数内で保存した場合
  .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>    トップレベルで保存した場合
まあ,save したものを load するときの事を考えると,「どの環境に load するか」という情報が必要なんでしょうね。そして,環境内という情報はトップレベルにおける情報と量が違うとか?&br;少なくとも,どちらもちゃんと動いているなら,バグではないのでしょうから,気にする必要はさらさらないのでは? --  &new{2019-10-30 (水) 08:40:17};
- ご回答いただきありがとうございます。 --  &new{2019-10-30 (水) 10:07:02};
- 保存される「環境」の違いなのですね。正直勉強不足のためどのような意味があるのかについては調べてみます。ちなみにですが、実際の使用方法としてパッケージした関数内でfor文を使用しいくつものをモデルを作成しているのですがそのたびにモデルサイズがでかく、そして処理時間が大きくなってるためちょっとした問題となっています。 --  &new{2019-10-30 (水) 10:07:39};

#comment

**RとRstdioのバージョン [#c7dea66d]
>[[tkzhsymd]] (2019-10-23 (水) 09:53:52)~
~
現時点でのRstdioの最新バージョンはそれぞれ1.5xxだと思います。その状態でライブラリをインストールすると”3.6ではダメ”というメッセージになりました。Rstdioの中にRが入っているということでしょうか。~
ところで、Rstdioがあれば別途インストールしておくRは不要ということになるのでしょうか。周囲にはRstdioがあればいらないということのようですが。~

//
- RStudio の最新バージョンは 1.2.5001 ですが...&br;RStudio を立ち上げると,画面に(私は Mac OS Catalina Ver. 10.15)で,R のバージョンもパッチが入っているのでみなさんのとちょっと違うかもしれないが)
 R version 3.6.1 Patched (2019-09-23 r77210) -- "Action of the Toes"
 Copyright (C) 2019 The R Foundation for Statistical Computing
 Platform: x86_64-apple-darwin15.6.0 (64-bit)
  以下略
というのが示されるでしょう?RStudio は R を使っているんです。&br; > 周囲にはRstdioがあればいらないということのようですが。&br;
そういう人は,間違っています。RStudio は R を使うための統合開発環境(あくまでも環境!)で,RStudio を使うためには R のインストールは必須です。&br; > その状態でライブラリをインストールすると”3.6ではダメ”というメッセージ&br;あなたの OS がなんであるとか,どのライブラリをインストールしようとしてそのエラーメッセージが出たとか(勝手な要約ではなくメッセージそのもの)を明記しないと,まともな回答は得られません。 --  &new{2019-10-23 (水) 10:34:56};

#comment

**線形計画法の結果が正しく出ません [#kb9a7933]
>[[Tomo]] (2019-08-09 (金) 10:16:14)~
~
こんにちは。~
~
lpSolveやRglpkを使って線形計画法をトライしているのですが、結果が正しく出ません。~
制約条件の設定が意図通りに効きません。以下のコードの何がおかしいでしょうか。~
すみませんが分かる方教えてください。~
~
やりたいこと:~
・弁当、菓子パン、おにぎり、お菓子、ジュースを 与えられた制約条件の中で~
 “最も短い時間で作りたい”(目的関数)~
・弁当、菓子パン、おにぎり、お菓子、ジュースは、~
 それぞれ機械A、B、Cの“いずれか1つを使う”(制約条件1)~
・機械A、B、Cは 使える合計時間上限が決まっている(制約条件2)~
・弁当、菓子パン、おにぎり、お菓子、ジュースは機械A、B、C~
 どれを使うかによって、作るのにかかる時間が違う(マトリックス)~
~
以下が作るのにかかる時間(マトリックス)と制約条件2です
 マトリックス 機械A    機械B   機械C
 弁当	        27	70	149    ← 機械AかBかCのどれか1つを使う
 菓子パン	23	58	122
 おにぎり	18	46	97
 お菓子	        25	36	76
 ジュース	14	35	73
 制約条件2→	60	70	80   ←機械Aは合計で60時間まで使える
 
 > library(Rglpk)
 > # 目的関数の係数
 > k.obj <- c(27, 23, 18, 25, 14, 70, 58, 46, 36, 35, 149, 122, 97, 76, 73)
 > # 制約式の左辺の係数
 > k.mat <- matrix(c(1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,
 +                   0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,
 +                   0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,
 +                   1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,
 +                   0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,
 +                   0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,
 +                   0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,
 +                   0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),  ncol=15, nrow = 8, byrow=TRUE)
 > # 制約式の等号・不等号
 > k.dir <- c("<=", "<=", "<=", "==", "==", "==", "==", "==")
 > # 制約式の左辺
 > k.rhs <- c(60, 70, 80, 1, 1, 1, 1, 1)
 > Rglpk_solve_LP(k.obj, k.mat, k.dir, k.rhs, max=FALSE)
上のコードを走らせると
 $optimum
 [1] 107
 
 $solution
  [1] 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
 
 $status
 [1] 0
 
 $solution_dual
  [1]   0   0   0   0   0  43  35  28  11  21 122  99  79  51  59
 
 $auxiliary
 $auxiliary$primal
 [1] 5 0 0 1 1 1 1 1
 
 $auxiliary$dual
 [1]  0  0  0 27 23 18 25 14
 
 $sensitivity_report
 [1] NA
と結果が出ますが、これだと全部機械Aで作れと言っていることになり、且つ、制約条件の60を超えてしまっています。すみませんが分かる方教えてください。&br;実際には食品数が200種類ほどあります。 -- [[Tomo]] &new{2019-08-09 (金) 16:50:10};
//

- すみませんが先程まで掲載いただいてたコードを再度拝見させていただけないでしょうか。コードの勉強をしたいです。宜しくお願い致します。 -- [[Tomo]] &new{2019-08-09 (金) 22:27:43};
- 掲載いただいてたコードはバックアップで確認できました。ありがとうございます。 -- [[Tomo]] &new{2019-08-10 (土) 18:34:13};

#comment

**濁音を含むファイル名 [#h24dfebf]
>[[κ(かっぱ)]] (2019-08-07 (水) 05:21:53)~
~
こんにちは。
 > x <- c('織田信長', 'パンダ')
という文字列があった時に、その要素と同じ名前のファイルが存在するかチェックしたいです。
 > y <- list.files()
 > y
 [1] "織田信長" "パンダ"
 [1] "織田信長" "パンダ"
とすると、「織田信長」も「パンダ」も存在するのですが、
 > x %in% y
 [1]  TRUE FALSE
となりました。ファイル名から引っ張ってきた「パンダ」 (y[2]) を見てみると、濁音、半濁音が変なことになっています。
 > substr(y[2], 1,1)
 [1] "ハ"
 > substr(y[2], 2,2)
 [1] "゚"
ハと半濁音の丸が別々の文字となっているようです。濁音も同じです。直接入力した「パンダ」とlist.files() からの「パンダ」と同じと認識させるにはどうしたら良いものでしょうか?~
ファイル名に日本語を使うのは好ましくないのですが、実際には人名のファイルが大量に存在しており、それがデータベースと一致しているか調べたいのであります。~

//
- 詳しくは「Mac utf8 濁点」で検索。対処法は,iconv() を使う。list.files() で得たファイル名 y を変換すると読み込み時に困るので,辞書 x を 変換する。
 x <- c('織田信長', 'パンダ')
 x <- iconv(x, "UTF-8", "UTF-8-MAC")
 y <- list.files()
 x %in% y
 
 > x %in% y
 [1] TRUE TRUE
旨くいってもいかなくっても,お返事を。 --  &new{2019-08-07 (水) 08:33:58};
- うまくいきました! ありがとうございます!  -- [[κ(かっぱ)]] &new{2019-08-07 (水) 10:50:09};

#comment

**ggraphの凡例について [#a18c2a91]
>[[SABI]] (2019-08-06 (火) 09:27:02)~
~
お世話になります。~
~
下記のようにggraphパッケージでネットワーク図を作成しているのですが、右側の凡例a,b,cの〇を大きくするにはどうすればよいでしょうか。~
~
 library(ggraph)
 require(igraph)
 
 gr <- graph_from_data_frame(data.frame(
 from = c(1, 1, 2, 2, 3, 3, 4, 5),
 to = c(2, 1, 5, 4, 2, 2, 1, 1),
 class = sample(letters[1:3], 8, TRUE)
 ))
 V(gr)$class <- c('a', 'b', 'c', 'a', 'b')
~
 gr %>%  
   ggraph(layout = "auto") +
   geom_edge_link(colour = "black") + 
   geom_node_point(aes(colour=class, size=10)) +
   geom_node_label(aes(label=name), repel=T)
~
~
内部的に使用しているigraphやggplot2のヘルプファイルも確認し、~
theme(legend.key.size=grid::unit(30, units="points"))やscale_size_manual(values=~~)、などで対応できると推測したのですが変化がありません。~
~
環境はigraph_1.2.4.1, ggraph_1.0.2, R version 3.5.0.です。~
~
宜しくお願い致します。~

//

#comment

**plotしたグラフ上の点の数値データ? [#u927a9d4]
>[[がんば]] (2019-06-27 (木) 13:04:33)~
~
お世話になります。周辺に誰も経験者がいなかったのでここを始めとしてネットで勉強してRstudioを使って測定結果から信頼度95%で上限下限の線が出せるようになった段階の者です。plotの後でlocator()の実行でマウスによりグラフ上の数値を取り出せるというとこまでは分かったですが特定のX値(又はY値)に対応するグラフ上の点の数値を返す関数はないのでしょうか(上限線、最尤値線、下限線のY値又はX値が返ってくるようなもの)?~
使用環境:~
R version 3.5.2 (2018-12-20)~
Platform: x86_64-w64-mingw32/x64 (64-bit)~
Running under: Windows >= 8 x64 (build 9200)~
Matrix products: default~
locale:~
[1] LC_COLLATE=Japanese_Japan.932  LC_CTYPE=Japanese_Japan.932   ~
[3] 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] WeibullR_1.0.10~
loaded via a namespace (and not attached):~
[1] compiler_3.5.2 tools_3.5.2    Rcpp_1.0.0~

//
- 直線回帰をやったのでしょうね。lm のオンラインヘルプを見るとよいでしょう。
 d = data.frame(x = c(256, 198, 216, 236, 268, 416, 431, 473, 238, 269),
                y = c(318, 63, 279, 304, 301, 305, 367, 370, 247, 444))
 new = data.frame(x = seq(min(d$x), max(d$x), length=1000))
 ans = lm(y ~ x, data=d)
 pred.w.plim <- predict(ans, new, interval = "prediction")
 pred.w.clim <- predict(ans, new, interval = "confidence")
 matplot(new$x, cbind(pred.w.clim, pred.w.plim[,-1]),
         lty = c(1,2,2,3,3), col=c(1,2,2,3,3),
         type = "l", xlab = "x", ylab = "predicted y")
 points(d)
ここで,locator を使って x, y 座標を取得し,その x 座標をデータフレーム new2 にして 予測限界,信頼限界を計算し,表示する
 xy = locator(5)
 new2 = data.frame(x = xy$x)
 pred.w.plim <- predict(ans, new2, interval = "prediction")
 pred.w.clim <- predict(ans, new2, interval = "confidence")
 cbind(new2, pred.w.plim, pred.w.clim[,-1])
分からない所は,またオンラインヘルプをひく。 --  &new{2019-06-27 (木) 13:39:21};

#comment

**エラー: vector memory exhausted (limit reached?) [#x5d9621b]
>[[初心者]] (2019-06-15 (土) 23:51:19)~
~
初心者です~
エクセルファイル(単純なXY の表)で作成したマトリックスをRに導入したところ、 エラー: vector memory exhausted (limit reached?) が出ました。自身でも原因をgoogle で調べたところ恐らくexcelファイルが大きすぎることが原因であるかと思いました。一応対処方法を見つけて実践してみたのですが、うまくいきませんでした。理解不足なだけかもしれませんが。googleで調べた解決方法は以下を導入することかと思いました。usethis::edit_r_environ("project")~
改善方法や他の解決方法を知っている方がいたら教えてください。~
よろしくお願いします。~

//
- data.tableパッケージとか、ffパッケージとか、bigmemoryパッケージを使うとか。 --  &new{2019-06-17 (月) 00:26:47};
- ファイル分割して、分割ファイルごとにやりたい処理してあとで結合ではダメでしょうか。https://qiita.com/mwmsnn/items/6982092a842072bd5cdd --  &new{2019-06-17 (月) 09:35:43};
- Excel で,csv ファイルに出力して,それを読み込んだらどうなる?&br;そもそも,もうすこし状況を説明しないとまともな回答は出ないよ。&br;初心者がいきなり扱う大きなファイルって,そもそも何万ギガなんだ? --  &new{2019-06-17 (月) 11:42:58};
- > エクセルファイル(単純なXY の表)で作成したマトリックスをRに導入した&br;って,用語が滅茶苦茶。 --  &new{2019-06-17 (月) 11:43:52};
- 「[[投稿における注意事項]]」を読んでから! --  &new{2019-06-17 (月) 21:14:52};
- そんなに大きなファイルを操作するなら,R ではなく C とか Java  とかを使うべし(そっちの方はもっと初心者なんだろうけど) --  &new{2019-06-17 (月) 21:38:37};

#comment

**分散分析の棄却域 [#a7ef1998]
>[[初心者]] (2019-06-07 (金) 08:37:14)~
~
分散分析の棄却域を求める関数qtukey(上側/下側確率, 平均値の数, 群内の自由度)とありますが、この平均値の数というのは具体的に何を指しているのでしょうか?~
~
投稿先が間違えていたので,移動したよ。~
あなたが記事を書いた枠のすぐ上に,「回答を期待する記事は原則 質問コーナー Q&A にお願いします。」って書いてあったでしょ。~

//
- 自分で調べる方法を教えてあげよう。&br;まず,R のオンラインヘルプで調べた?英語は分からないなどと言い訳しないこと。表示されるページのタイトルに「Studentized Range Distribution」とあるよね。あなたが qtukey を調べるきっかけになった「日本語」による説明の中に,「ステューデント化された範囲の表」とかありませんでた?英語がいやでも一応表示された説明を読んでみましょう。&br;よく分からなかったでしょうね。では,日本語で「スチューデント化された範囲の表」を検索してみてください。&br;「[[ステューデント化した範囲の表とは何? Weblio辞書:https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=2ahUKEwi27-yGjdbiAhWGfXAKHZiWCcsQFjAAegQIBRAB&url=https%3A%2F%2Fwww.weblio.jp%2Fcontent%2F%25E3%2582%25B9%25E3%2583%2586%25E3%2583%25A5%25E3%2583%25BC%25E3%2583%2587%25E3%2583%25B3%25E3%2583%2588%25E5%258C%2596%25E3%2581%2597%25E3%2581%259F%25E7%25AF%2584%25E5%259B%25B2%25E3%2581%25AE%25E8%25A1%25A8&usg=AOvVaw1oQYGGhfqYH9oIZTRLskH5]]」というのを開くと表が表示されます。~
「英語でいいよ」というなら,[[Statistics How To:https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=16&cad=rja&uact=8&ved=2ahUKEwj77rX1i9biAhWUBIgKHSZJBvIQFjAPegQIBBAB&url=https%3A%2F%2Fwww.statisticshowto.datasciencecentral.com%2Fstudentized-range-distribution%2F&usg=AOvVaw0X8goudytP5OzA-nP9cBav]] をどうぞ。~
α = 0.01 の表で,「群の数」とあるのが「平均値の数」ですね。つまり,群の数だけ平均値があるからね。ν(v 見たいに見えるけど,ギリシャ文字のニューだよ)は,統計学の慣習で,「自由度」を表すんだ。で,群の数 5,自由度 10 のときの値は 6.14 って,書いてあるよね。個の数値を求める関数が qtukey だ。
 > qtukey(0.01, 5, 10, lower.tail=FALSE)
 [1] 6.136093
lower.tail というのは,下側確率を求めるよということで,lower.tail=FALSE は上側確率を求めるということだ(デフォルトでは lower.tail=TRUE になっているので,上側確率を求めるときには必ず lower.tail=FALSE を指定しなければならないよ)~
他の例も試してご覧。また,qtukey の逆関数である ptukey もやってみよう。~
基本的には,あなたが最初に参照した資料に十分な説明がない場合,他の資料を探すということがだいじ。~
今の場合だと,「分散分析」について詳しく調べれば,解答は自ずから得られる。今は,インターネットという便利なものがあるのだから,なおさら。昔なら,あなた,図書館へ行って一日がかりですよ。 --  &new{2019-06-07 (金) 08:57:49};

#comment

**図の表示に関して [#pe7fa6c2]
>[[初心者]] (2019-05-31 (金) 06:53:53)~
~
初心者です。~
1)histやplot等で図を複数作り、重ねて表示したいです。この際に作図した後に一旦次のコードを入力しようと画面をクリックすると、開いていたウィンドウが閉じてしまい、重ねて作図することができません。どうしたら良いのでしょうか?~
~
2)また、hist(x)等で図を表示して一度そのウィンドウを閉じると、以後全く同じコードを入力しても図が表示されません。このため再度同じ図を表示するときには、一度ソフトそのものを終了しなくてはなりません。これは正常なのでしょうか?~

//
- 初心者だろうと,投稿についてはちゃんと作法に則って,正しい場所で質問しなさい。どうすれば良いかは,上の方の注意などを良く読む。 --  &new{2019-05-31 (金) 06:54:52};
- 重ねても大丈夫な図の場合は、描画関数にaddオプションがついています。add = TRUEを追加してみてください。グラフィックのウインドウが閉じたら表示できない件は、Rそのものの話ではなく、どんなユーザインタフェースをお使いなのかに依存する話なので、どのような状態でRを使っているのか(例えば、iPhoneでR Languageアプリを使っていますなど)が内緒だと答えようがありません。 --  &new{2019-06-11 (火) 11:59:21};

#comment

**Rcmdr のインストールができません。 [#g358de97]
>[[ハヤト]] (2019-05-08 (水) 09:01:15)~
~
どうしたらいいのでしょうか?~

//
- OS は何。バージョンは。R のバージョンも。情報がないので,回答はつかないでしょう。&br;キミの場合,そもそも install.packages したのかい? --  &new{2019-05-08 (水) 22:40:55};

#comment

**psych パッケージが使えません [#a11f2f58]
> (2019-05-06 (月) 12:07:33)~
~
psych を使おうとすると,エラーメッセージが出ます。~
R 3.6 のくせに,R 3.5 の libgfortran.3.dylib を読もうとして失敗しているようです。~
 > library(psych)
  エラー: package or namespace load failed for ‘psych’:
   .onLoad は loadNamespace()('mnormt' に対する)の中で失敗しました、 詳細は: 
   call: dyn.load(file, DLLpath = DLLpath, ...) 
   error:  共有ライブラリ '/Library/Frameworks/R.framework/Versions/3.6/Resources/library/mnormt/libs/mnormt.so' を読み込めません: 
   dlopen(/Library/Frameworks/R.framework/Versions/3.6/Resources/library/mnormt/libs/mnormt.so, 6): Library not loaded:
          /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libgfortran.3.dylib
   Referenced from: /Library/Frameworks/R.framework/Versions/3.6/Resources/library/mnormt/libs/mnormt.so
   Reason: image not found  
psysh は~
 Package:            psych
 Version:            1.8.12
 Date:               2018-12-31
なので,R 3.6 に対応できていないのも仕方ないとは思いますが。~
R のバージョン情報は~
 > sessionInfo()
 R version 3.6.0 Patched (2019-05-02 r76458)
 Platform: x86_64-apple-darwin15.6.0 (64-bit)
 Running under: macOS Mojave 10.14.4

//
- R 3.6 がイントールされる段階で R.framework/Versions 中の 3.5 ディレクトリが消去されてしまっているので,それを復活させれば library(psych) はできます(他のライブラリも同様)。&br;手順としては,R 3.5 を再インストールする。3.5 ディレクトリを別の場所に移動する。新たに R 3.6 をインストールする。移動しておいた 3.5 ディレクトリを R.framework/Versions ディレクトリに戻す。 --  &new{2019-05-06 (月) 16:11:32};

#comment

**パッケージ宣言するとエラーがでます [#v17a0b7d]
>[[てりたま]] (2019-04-29 (月) 10:05:09)~
~
お世話になります。~
パッケージはインストールできますが、宣言すると下記エラーがでます。~
~
 ダウンロードされたパッケージは、以下にあります 
        C:\Users\teric\AppData\Local\Temp\RtmpyiJ0Xk\downloaded_packages 
> library (Rcmdr)~
 要求されたパッケージ splines をロード中です 
 要求されたパッケージ RcmdrMisc をロード中です 
 要求されたパッケージ car をロード中です 
 要求されたパッケージ carData をロード中です 
 要求されたパッケージ sandwich をロード中です 
 要求されたパッケージ effects をロード中です 
Error: package or namespace load failed for ‘effects’ in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]):~
  ‘survey’ という名前のパッケージはありません 
 エラー:  パッケージ ‘effects’ をロードできませんでした 
~
あるべきものがないといっているので、メモリ不足?~
空き領域190G インテルI5 256メモリ Win10使用です。~
~
解決策を教えていただけますでしょうか。~

//
- 依存パッケージが必要なパッケージがあります。effects パッケージ,survey パッケージがインストールされているか確認してみてくださいね。 --  &new{2019-04-29 (月) 11:18:53};
- アドバイスありがとうございます!早速追加パッケージを試みましたができず・・・それだけを手動でインストールする仕方を教えていただけますか -- [[てりたま]] &new{2019-04-29 (月) 14:25:19};
- > 早速追加パッケージを試みましたができず&br;って,Rcmdr はどうやってインストールしたの? --  &new{2019-04-29 (月) 15:38:23};
- install.packages("Rcmdr", dependencies=TRUE) ってやってみたら? --  &new{2019-04-29 (月) 16:19:29};
- 手動ではそうするんですね!Rcmdrはツールにあったので、インストールできましたが、宣言するとeffectsがないと言っているので、どうしたものかと思いましたが、書いていただいた”Rcmdr"を”effectes"に変えてインストールしたらできました!!ありがとうございます。 -- [[てりたま]] &new{2019-04-29 (月) 23:55:28};
- library(Rcmdr)を打ち込んでもエラーが出ます。パッケージがない。 -- [[ハヤト]] &new{2019-05-08 (水) 08:59:33};
- パッケージがないというエラーメッセージが表示されたら、パッケージをインストールします。 --  &new{2019-06-11 (火) 11:47:54};

#comment

**非線形最小二乗法のnls関数の各パラメータが負にならないようにしたい [#b71a01c8]
>[[YT]] (2019-04-12 (金) 19:01:08)~
~
お世話になっております。~
最近Rを使い始めた者です。~
~
データの処理のときにnls関数を用いて、非線形最小二乗法でフィッティングを行っています。~
その際正の値であるべきパラメータ(フィッティングして得られるパラメータ、start=で定めるパラメータ)が負の値になってしまいます。~
これらのパラメータが負にならないように制限を付けることはできるのでしょうか?~
どなたかわかる方がいらっしゃいましたら、教えていただけると幸いです。~
宜しくお願い致します。~

//
- nlsで、algorithm="port"を指定し、lower, upper  で、パラメータの制約条件を指定する(まずは,オンラインヘルプを参照のこと)~
その後は,Web 検索。日本語でというなら,http://user.keio.ac.jp/~nagakura/R/R_NLOLS.pdf の最後に例がある。 --  &new{2019-04-13 (土) 07:51:10};
- ご回答ありがとうございました。おかげさまで解決することができました。 -- [[YT]] &new{2019-04-14 (日) 15:48:07};

#comment

**自動でカテゴリーと要素数が反映されるようにしたい [#ic4835c6]
>[[Sai]] (2019-04-10 (水) 16:27:33)~
~
お世話になっております。~
~
下記のプログラムで、map_masterというオブジェクトのカテゴリー数(例では、A, B, Cの3つのカテゴリーで、それぞれ3, 2, 1個の要素を持つ)とkを増減させた時に、mapも自動で変わるようなプログラムを作りたいと思っています。~
今はカテゴリー数が3つの例でやっていますが、実際はもっといくつもあるので、手作業で入れるのは厳しい状況です。mapと同じ出力を得たいのですが、可能でしょうか。~
kの数および、A, B, Cのカテゴリー数を手動で増減(D以降を付け足したり、Bだけ抜いたり)させたときに、mapが自動で変わるようにしたいです。~
~
どなたかわかる方がいらっしゃいましたら、ご教授頂けますと幸いです。~
どうぞよろしくお願いいたします。~
~
 #各カテゴリーの名前とカテゴリーに含まれる要素数(既知)
 nA <- c(3, 1, 4)
 nB <- c(2, 4, 5)
 nC <- c(1, 3, 5)
 k <- 1
 map_master <- c("A=factor(rep(NA, nA[k]))", 
                 "B=factor(rep(NA, nB[k]))", 
                 "C=factor(rep(NA, nC[k]))")
 #カテゴリー数
 LM <- length(map_master)
 
 #入れ物の用意
 map <- NA
 K <- gamma(LM+1)
 for(i in 1 : K) {
  map <- c(map, list(NA))
 }
 
 #各カテゴリーの組み合わせ(この部分を自動で得たい)
 map[[1]] <- list()
 map[[2]] <- list(A=factor(rep(NA, nA[k])))
 map[[3]] <- list(B=factor(rep(NA, nB[k])))
 map[[4]] <- list(C=factor(rep(NA, nC[k])))
 map[[5]] <- list(A=factor(rep(NA, nA[k])), B=factor(rep(NA, nB[k])))
 map[[6]] <- list(A=factor(rep(NA, nA[k])), C=factor(rep(NA, nC[k])))
 map[[7]] <- list(B=factor(rep(NA, nB[k])), C=factor(rep(NA, nC[k])))

//
- 以下のようなのでいいのかな?~
「#入れ物の用意」の次の行から書く
 library(e1071)
 b <- bincombinations(LM)
 n <- nrow(b)
 s <- character(n-1)
 for (i in 1:(n-1)) {
   s[i] <- sprintf("%2d ", sum(b[i,]))
   sep <- ""
   for (j in 1:LM) {
     if (b[i, j] == 1) {
       t <- sprintf("%s%s=factor(rep(NA, n%s[k]))", sep, LETTERS[j], LETTERS[j])
       sep <- ", "
       s[i] <- paste0(s[i], t)
     }
   }
 }
 s <- sort(s)
 map <- vector("list", n-1)
 for (i in 1:(n-1)) {
   t <- sprintf("map[[%d]] <- list(%s)", i, substr(s[i], 4, nchar(s[i])))
   eval(parse(text=t))
 }
実行が終わって,map を表示すると,お望みのものが出来ているはず。 --  &new{2019-04-10 (水) 18:15:07};
- 早速のご回答ありがとうございます。 ~
ほぼ得たいものを得ることができましたが、私の例がまずかったようで少し修正をしたいのですが、それにてこずっております。~
例ではA, B, Cという規則正しいアルファベットをカテゴリー名および要素の数(nA, nB, nC)として与えておりましたが、実際のところhogehogeやA1tなど、規則正しくはなっていません。~
masterのほうで揃えれば済む話なのですが、もし可能でしたら、masterにある名前を使って同じことができるようなプログラムにすることは可能でしょうか。今回でしたら、LETTERS[j]の箇所が該当するかと思いますが、この部分をmasterに登録されている名前(AとnA, BとnB, CとnCが任意の名前でも大丈夫にしたい)を使って、書き換えるようなことは可能でしょうか。~
たとえば、下記のようにmap_masterがなっていても動くようなものにしたいのですが、可能でしょうか。
 nhoge <- c(3, 1, 4)
 nB    <- c(2, 4, 5)
 nA1t  <- c(1, 3, 5)
 map_master <- c("hogehoge=factor(rep(NA, nhoge[k]))", 
                        "B=factor(rep(NA, nB[k]))", 
                      "A1t=factor(rep(NA, nA1t[k]))")
私の例が悪かったせいで、二度手間になってしまい大変申し訳ありません。~
ご教授頂けますと幸いです。-- [[Sai]] &new{2019-04-11 (木) 09:58:32};
- 手間がかかるね。
 map_master <- c("hogehoge=factor(rep(NA, nhoge[k]))", 
   "B=factor(rep(NA, nB[k]))", 
   "A1t=factor(rep(NA, nA1t[k]))")
があって,以下の 3 行で name1 にカテゴリー名, name2 に要素数が入りますよ。
 a <- matrix(sapply(map_master, function(s) unlist(strsplit(s, "[= \\[]"))[c(1,3)]), 2)
 name1 <- a[1,]
 name2 <- a[2,]
実行結果
 > name1
 [1] "hogehoge" "B"        "A1t"     
 > name2
 [1] "nhoge" "nB"    "nA1t"
あとは,前の LETTERS のかわりに name1,後ろの LETTERS のかわりに name2 を書けばよいだけでしょ。~
プログラムが書けないと,上のプログラムが何をやっているのかはっきり理解できず,書き換えができないのだろうかね。 --  &new{2019-04-11 (木) 12:54:07};
- ご回答くださり、ありがとうございました。おかげ様で無事目的を果たすことができました。~
私の能力不足で二度手間を強いてしまったにも関わらず、丁寧に教えてくださってありがとうございました。 -- [[Sai]] &new{2019-04-11 (木) 15:08:40};

#comment

**データフレームの変数名を別データフレームの列で置き換えたい [#na23cc71]
>[[初心者k]] (2019-03-18 (月) 21:06:03)~
~
~
最近Rを始めたものです。~
~
以下のようなデータフレームXの変数名をデータフレームYのCATで置き換えて最終段のようなデータフレームを作成する方法をご教示いただきたいです。~
大変初歩的な質問と思いますが、どうぞよろしくお願いいたします。
 データフレームX
 A   B  C   D
 1   F  153 50
 2   F  161 53
 3   M  180 74
 4   M  169 58
 
 データフレームY
 Name CAT 
 A    ID
 B    SEX
 C    H
 D    W
 
 ID  SEX  H    W
 1   F    153  50
 2   F    161  53
 3   M    180  74
 4   M    169  58

//
- プログラムとは,いくつかの機能を順序正しく組み合わせることです。&br;今の場合だとデータフレーム y から "CAT" 列を取り出し,colnames(x) に代入(付値)する。
 colnames(x) <- y[, "CAT"]
または
 colnames(x) <- y[, 2]
注意すべきは,[ の後に , が必要ということくらいかな? --  &new{2019-03-19 (火) 08:48:30};
- 丁寧な回答ありがとうございます。無事解決することができました。 -- [[初心者k]] &new{2019-03-19 (火) 21:27:45};

#comment

**バイプロット図の解釈 [#la04db95]
>[[ゆたたみ]] (2019-03-05 (火) 18:04:16)~
~
お世話になります。~
~
library(FactoMineR)~
CA(データ名, graph = FALSE)~
#ggplot2ベースのバイプロットを描く~
library(factoextra)~
fviz_ca_biplot(データ名)~
~
上記にてバイプロット図を描くと軸の横に%が表示されます~
例(Dim1(26.3%))~
この%は何を意味しているのでしょうか?~
~
詳しい方教えていただけますと幸いです。~

//
- 数字で出力される結果を見なさい。Eigenvalues のところの % of var. の行にある数値と比べてご覧?同じでしょ?だいたい推察がつきそうに思うが... --  &new{2019-03-05 (火) 18:58:37};
- 回答ありがとうございます! -- [[ゆたたみ]] &new{2019-03-05 (火) 19:13:25};
- 固有値の累積寄与率?なのですね2軸だとDim1とDim2をたして7~8割程度あれば情報をカバーできているということでしょうか? -- [[ゆたたみ]] &new{2019-03-05 (火) 19:14:49};
- 最初書いたときに引用箇所を間違えた。累積寄与率ではなく寄与率。「7~8割程度あれば情報をカバー」情報をカバーというのは表現が変だけど,元の情報の 7-8 割りを抽出できていると言うこと。7-8 割りでよいのかは,絶対的な基準があるわけではない。 --  &new{2019-03-05 (火) 19:16:22};

#comment

**エラー:missing value where TRUE/FALSE needed [#k7207c7a]
>[[K.Tanaka]] (2019-02-26 (火) 20:19:08)~
~
お世話になります。環境はWindows 10Pro 64bit + R version 3.5.2 (+ RStudio)です。
 > a <- c(1,3,3,4,6,6,7,8,8,8)
 > (flg <- c())
 NULL~
 > (flg <- c(rep(0,10)))
  [1] 0 0 0 0 0 0 0 0 0 0
 > for(i in 1:10){
 +   if(a[i]==a[i+1]){
 +     flg[i] <- 1
 +   }
 + }
 Error in if (a[i] == a[i + 1]) { : missing value where TRUE/FALSE needed
 > (flg)
  [1] 0 1 0 0 1 0 0 1 1 0
 ベクトルaで、同じ数値が続く最初の部分にフラグ(flg=1)を立てたいと思っています。~
 しかし、スクリプトを実行すると、上記のエラーが出てしまいます。~
 また、この例ではきちんとフラグが立っていますが、実際に処理したい3,000行ほどのベクトルでは、ほとんどコードは同じなのですが、すべてのフラグに1が立ってしまいます。~
 エラーコードでググって見ましたが、
https://code.i-harness.com/ja-jp/q/703b33~
http://mako-shark.hatenablog.com/entry/2017/11/14/140146~
http://www.okadajp.org/RWiki/?%E5%88%9D%E7%B4%9A%EF%BC%B1%EF%BC%86%EF%BC%A1%20%E3%82%A2%E3%83%BC%E3%82%AB%E3%82%A4%E3%83%96%282%29#u8ec8994~
などがヒットしたので見てみましたが、理解できませんでした。~
やろうとしていることは非常に単純ですし、上で挙げた例では欠損値の影響も無さそうです。どなたか解決方法をご教示下さいますようお願い致します。~

//
- 早速のコメント、ありがとうございます。ご指摘の通りでした。<br> -- [[K.Tanaka]] &new{2019-02-27 (水) 10:30:58};
- > 同じ数値が続く最初の部分にフラグ(flg=1)を立てたい&br;というのだから,flg <- as.numeric(a[-1] == a[-length(a)]) は不適解では? --  &new{2019-02-27 (水) 10:40:46};
 > a <- c(1,2,3,3,3,3,4,4,4,6,6,6,6,7,8,8,8,8,8,9,9,10,11)
 > b <- numeric(length(a))
 > x <- c(0, rle(a)$lengths)
 > b[(cumsum(x[-length(x)])+1)[x[-1] != 1]] <- 1
 > b
  [1] 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0
- すべてのフラグに1が立ってしまうのは、やはり凡ミスでした。ところで、Rの文法に慣れていないため、「flg <- as.numeric(a[-1] == a[-length(a)])」という記述をどう解釈するのかが分かりません。もちろん独学するつもりですが、ヒントを頂ければ幸いです。また、このような書き方をするのはRではforループの処理が遅く、なるべくベクトルで処理すべきと言うことに起因することでしょうか?よろしくお願いします。 -- [[K.Tanaka]] &new{2019-02-27 (水) 10:50:30};
- a[-1] は先頭の要素を除いたベクトル,a[-length(a)] は最後の要素を除いたベクトル, == は両方のベクトルの対応する要素ごとの比較演算,そのTRUE,FALSEからなる結果ベクトルを as.numeric で 1, 0 に変換してる。 --  &new{2019-02-27 (水) 11:11:55};
- なるほど、例が連続の全検出だったので、勘違いしておりました。 -- [[元回答者]] &new{2019-02-27 (水) 11:54:47};
- なるほど、Forループで処理するよりベクトルで処理する方がスマートですね。BASICやPascalなどの言語をすでに学習していたため、ベクトルの使いこなしには勉強と慣れが必要そうです。 -- [[K.Tanaka]] &new{2019-02-27 (水) 14:37:28};
- >b[(cumsum(x[-length(x)])+1)[x[-1] != 1]] <- 1 のコメントもありがとうございました。 -- [[K.Tanaka]] &new{2019-02-27 (水) 14:40:37};
- 大きな誤解があります。for を使おうが,ベクトル演算を使おうが,結果を得るまでの処理時間は,問題になるレベルではありません(五十歩百歩)。それよりも,正しい結果を得るために,正しいプログラムを書けることが一番大切なのです。その意味では,BASIC でも Pascal でも FORTRAN でも COBOL でも,Python でも,R でも honyarahonara でもなんでもいいのです。&br;for と if があれば,どんなアルゴリズムでも記述できます。 --  &new{2019-02-27 (水) 20:42:23};
- 改めて「R for 遅い」で検索すると、Rのforの遅さを否定する記事がいくつもありました。&br;一方、https://www.slideshare.net/antiplastics/acceralation-of-r のようにfor文をベクトル処理によって最適化しているという記事もありました。&br;(ベンチマークなのでRの遅さが際立っているのかも知れませんが。)&br;プログラムの再利用回数が少ないのであれば、慣れないベクトル処理に頭を悩ませてコーディングに時間をかけるより、&br;自分に分かりやすい方法で書いた方がトータルの時間で見れば効率的、ということでしょうか。 -- [[K.Tanaka]] &new{2019-02-28 (木) 10:38:31};
- 回答をお寄せくださった皆様、さらには質問文の書式を訂正してくださった方、どうもありがとうございました。 -- [[K.Tanaka]] &new{2019-03-01 (金) 11:24:45};

#comment

**3次元空間におけるスプライン曲線 [#l82155a9]
>[[徒弟]] (2019-02-25 (月) 10:22:13)~
~
お世話になっております。~
~
3次元座標(x,y,z)にプロットした散布図があります。元のデータもあります。~
この点を一本の曲線式で近似したいと考えております。~
~
そのためにスプライン近似が使えるのではないかと考えておりますが、~
Rで3次元座標に対するスプライン近似を行う方法が分かりません。~
どのように行えば良いかご教示いただければ幸いです~


#comment

**カプランマイヤー [#v566b5a9]
>[[jj]] (2019-02-01 (金) 07:33:32)~
~
今までpatient at riskを含んだカプランマイヤー曲線を描くのにnpsurvとsurvplotを使用していたのですが、最近になって使用できなくなりました。rmsのパッケージに変更があったのでしょうか?ご存知の方がいらっしゃいましたらご教授願います。~

//
- 最新バージョンは 2019-01-27 に更新された 5.1-3 だが,パッケージの作成ミスなんじゃないか?~
 > library(rms)
  エラー: package or namespace load failed for ‘rms’:
   オブジェクト 'plotp' を見つけることができませんでした (名前空間 'rms' のロード中に) 
って出るからね。~
一つ前のバージョン 5.1-2 では,少なくとも example(npsurv) は動いていた。~
 Maintainer:         Frank E Harrell Jr
                     <f.harrell@vanderbilt.edu>
に連絡してみれば? --  &new{2019-02-01 (金) 18:18:43};
- もう見ていないのだろうけど。rms の依存パッケージ Hmisc も,最新 4.2-0 にすれば,ちゃんと動く。 --  &new{2019-02-12 (火) 06:11:17};
- 開発者に相談してみましたがうまくいかず困っていました。試してみます。有難うございます。 -- [[jj]] &new{2019-02-21 (木) 02:24:25};
- Hmiscも最新にするというのは、別にインストールするということでしょうか?rmsをインストールした後に"パッケージ ‘Hmisc’ はバージョン 3.4.3 の R の下で造られました"と出るのでダウンロードされているとは思うのですが。 -- [[jj]] &new{2019-02-27 (水) 08:40:06};
- インストールされていないならインストールする。旧版がインストールされているならアップデート。現在のバージョンを知りたいなら,library(Hmisc) のあと,sessionInfo() とすれば,たくさん表示がでるが,
 other attached packages:
 [1] Hmisc_4.2-0     ggplot2_3.1.0   Formula_1.2-3  
のようにバージョン番号が出力されている部分がある。(単に library(help=Hmisc) でもよいけど)  --  &new{2019-02-27 (水) 11:19:36};
- 私も rms で欠損値を補完しようとしているのですが、  オブジェクト 'plotp' を見つけることができませんでした (名前空間 'rms' のロード中に) が出てきてにっちもさっちもいきません。どのように対処したらいいでしょうか。御教授いただけると大変ありがたいです。宜しくお願い致します。  -- [[gabriel]] &new{2019-11-17 (日) 21:44:56};

#comment

**ステップワイズ法による変数選択 [#w1d2b297]
>[[r]] (2019-01-21 (月) 09:24:17)~
~
初心者です。~
Ri386 3.4.3をwindows7professionalで使用しています。~
A	B	C	D	E	F	G	H~
1	71.18 	3.16 	76.90 	27.73 	55.74 	5.27 	11.07 ~
1	68.86 	9.30 	71.44 	28.83 	60.54 	6.20 	13.04 ~
1	71.41 	2.74 	72.77 	28.44 	56.49 	4.28 	10.77 ~
1	NA	11.38 	NA	NA	62.20 	4.05 	11.07 ~
1	67.13 	8.71 	74.36 	25.11 	63.07 	2.34 	10.45 ~
1	71.64 	4.93 	75.14 	28.89 	56.52 	5.41 	10.80 ~
途中省略~
3	71.85 	1.61 	78.25 	28.89 	46.76 	5.47 	7.67 ~
3	73.94 	2.63 	71.32 	29.54 	55.34 	3.77 	8.33 ~
3	73.36 	1.31 	78.84 	NA	55.05 	4.94 	8.53 ~
3	72.42 	3.80 	82.98 	27.27 	52.07 	6.25 	9.89 ~
3	71.53 	2.66 	81.99 	26.39 	55.57 	5.76 	10.02 ~
途中省略~
6	74.56 	2.77 	74.58 	29.18 	52.10 	8.06 	10.59 ~
> data=read.table("clipboard",header=TRUE)~
> result3<-lm(data[,1]~data[,2]+data[,3]+data[,4]+data[,5]+data[,6]+data[,7]+data[,8])~
> result4<-step(result3)~
Start:  AIC=78.25~
data[, 1] ~ data[, 2] + data[, 3] + data[, 4] + data[, 5] + data[, ~
    6] + data[, 7] + data[, 8]
~
            Df Sum of Sq    RSS    AIC
- data[, 7]  1    0.0795 179.80 76.285~
- data[, 5]  1    0.1613 179.88 76.326~
- data[, 4]  1    1.8827 181.61 77.183~
- data[, 2]  1    3.9465 183.67 78.200~
<none>                   179.72 78.245~
- data[, 8]  1    7.4237 187.15 79.888~
- data[, 6]  1    9.3509 189.07 80.810~
- data[, 3]  1   10.3408 190.06 81.280~
~
Step:  AIC=76.28~
data[, 1] ~ data[, 2] + data[, 3] + data[, 4] + data[, 5] + data[, ~
    6] + data[, 8]
~
            Df Sum of Sq    RSS    AIC
- data[, 5]  1    0.1715 179.97 74.371~
- data[, 4]  1    2.0560 181.86 75.308~
- data[, 2]  1    3.8690 183.67 76.201~
<none>                   179.80 76.285~
- data[, 3]  1   10.2626 190.07 79.281~
- data[, 8]  1   11.2881 191.09 79.765~
- data[, 6]  1   13.8466 193.65 80.962~
Error in step(result3) : ~
  number of rows in use has changed: remove missing values?
なぜ、エラーになるのか分かりません。~
どうぞご教示下さい。~

//
- Ri386 3.4.3 を windows7 professional で使用というのも,トホホだが。投稿法もなってない...「「[[投稿における注意事項]]」を読んで,それに従ってください。」というのも目に入っていないんだろうね~
このデータセットには NA を含む行が2行ある。説明のためにその行を先頭に移動しておく。
 A	B	C	D	E	F	G	H
 1	NA	11.38 	NA	NA	62.20 	4.05 	11.07
 3	73.36 	1.31 	78.84 	NA	55.05 	4.94 	8.53    ★このデータ
 1	71.18 	3.16 	76.90 	27.73 	55.74 	5.27 	11.07
 1	68.86 	9.30 	71.44 	28.83 	60.54 	6.20 	13.04
    : 以下略
まず,重回帰分析に限らないが,NA を含む行は分析には用いられない。~
最初,全ての変数を使ってAICが計算されるとき,2つの行はいずれも分析に用いられない。~
それ以降の段階で,E は分析に使われない(E を説明変数として使わない場合について AIC を計算する)という状況になったとき,上の「★このデータ」とマークした行のデータは分析に使われることになるのがわかりますか?~
また,さらに B, D, E も使わないという分析時には,全てのデータが使われる。~
こんな風に,NA を含むデータを分析するときには,実際に分析に使われるデータの個数が変わるわけです。~
サンプルサイズが異なれば,AIC の算出に問題が出てくるので,件のエラーメッセージが出ているわけです。~
英語のメッセージですが number of rows in use has changed: remove missing values?
「使っている(データの)行数(個数)が変わったよ!欠損値を除くカイ?」って書いてあるよね。上に説明したことがすぐわかるようなものではないかも知れないけど,データ分析の常識なので,なんとなくでも分かると思うが。統計の勉強も必要だけど,英語もね。~
そこで,これを避ける為にはどうするか。「欠損値を除く!!」んだよ,バディ!!。
 > data2 = na.omit(data) # na.omit で欠損値を含む行をオミットする
 > nrow(data2) # 残った行数が 90 になった
 [1] 90
 > nrow(data) # 元のデータは欠損値を含む 2 行があった
 [1] 92
 
 > result <- lm(A ~., data2) # 重回帰モデルの指定は,こんな風にする
 
 > result2 <- step(result) # AIC を見る
 Start:  AIC=78.25
 A ~ B + C + D + E + F + G + H
 
        Df Sum of Sq    RSS    AIC
 - G     1    0.0795 179.80 76.285
 - E     1    0.1613 179.88 76.326
 - D     1    1.8827 181.61 77.183
 - B     1    3.9465 183.67 78.200
 <none>              179.72 78.245
 - H     1    7.4237 187.15 79.888
 - F     1    9.3509 189.07 80.810
 - C     1   10.3408 190.06 81.280
 
 Step:  AIC=76.28
 A ~ B + C + D + E + F + H
 
        Df Sum of Sq    RSS    AIC
 - E     1    0.1715 179.97 74.371
 - D     1    2.0560 181.86 75.308
 - B     1    3.8690 183.67 76.201
 <none>              179.80 76.285
 - C     1   10.2626 190.07 79.281
 - H     1   11.2881 191.09 79.765
 - F     1   13.8466 193.65 80.962
 
 Step:  AIC=74.37       この段階で E は使わないということになるが
 A ~ B + C + D + F + H         分析例数は変わらない(90行のまま)ので,エラーは起きない
 
        Df Sum of Sq    RSS    AIC
 - D     1    3.0666 183.04 73.891
 <none>              179.97 74.371
 - B     1    5.3420 185.32 75.003
 - C     1   10.0913 190.07 77.281
 - H     1   11.3027 191.28 77.853
 - F     1   13.7468 193.72 78.995
 
 Step:  AIC=73.89
 A ~ B + C + F + H
 
        Df Sum of Sq    RSS    AIC
 <none>              183.04 73.891
 - B     1    4.5611 187.60 74.107
 - H     1    9.6070 192.65 76.495
 - F     1   12.0254 195.07 77.618
 - C     1   13.0502 196.09 78.090
可能なら,投稿記事を編集したらよい  --  &new{2019-01-21 (月) 13:58:47};
- ありがとうございました。ご指摘の点、勉強いたします。失礼しました。 -- [[r]] &new{2019-01-21 (月) 16:45:06};

#comment

**一元配置の分散分析時のエラーについて [#f9da0e14]
>[[r]] (2019-01-11 (金) 10:35:26)~
~
初心者です。~
> グループ1 <-c(0.214868106,0.130905896)~
> グループ2 <-c(0.363994669,0.133351903)~
> グループ3 <-c(0.314337464,0.33376496)~
> グループ4 <-c(0.24814533,0.435896438)~
> グループ5 <-c(0.460955618,0.348227084)~
> グループ6 <-c(0.479455052,0.4087283)~
> 全グループ<-c(グループ1, グループ2, グループ3, グループ4,グループ5,グループ6)~
> 薬の種類 <-c(rep("A", 2), rep("B", 2), rep("C", 2), rep("D", 2), rep("E", 2), rep("F", 2))~
> 薬の種類~
 [1] "A" "A" "B" "B" "C" "C" "D" "D" "E" "E" "F" "F"
> 薬の種類2 <-factor(薬の種類)~
> 薬の種類2~
 [1] A A B B C C D D E E F F
Levels: A B C D E F~
> oneway.test(全グループ~薬の種類2, var.equal=TRUE)~
Error in model.frame.default(formula = 全グループ ~ 薬の種類2) : ~
  variable lengths differ (found for '薬の種類2')
以上のとおりエラーが出てしまうのはなぜでしょうか。~
ご教授お願い致します。~

//

- 「グループ5」と「グループ6」の定義の閉じかっこが全角~
「全グループ」の定義中の「グループ4」,「グループ5」,の後のカンマが2個とも全角。~
それらを半角にするとちゃんと動く
 > グループ1 <-c(0.214868106,0.130905896)
 > グループ2 <-c(0.363994669,0.133351903)
 > グループ3 <-c(0.314337464,0.33376496)
 > グループ4 <-c(0.24814533,0.435896438)
 > グループ5 <-c(0.460955618,0.348227084)
 > グループ6 <-c(0.479455052,0.4087283)
 > 全グループ<-c(グループ1, グループ2, グループ3, グループ4, グループ5, グループ6)
 > 薬の種類 <-c(rep("A", 2), rep("B", 2), rep("C", 2), rep("D", 2), rep("E", 2), rep("F", 2))
 > 薬の種類
  [1] "A" "A" "B" "B" "C" "C" "D" "D"
  [9] "E" "E" "F" "F"
 > 薬の種類2 <-factor(薬の種類)
 > 薬の種類2
  [1] A A B B C C D D E E F F
 Levels: A B C D E F
 > oneway.test(全グループ~薬の種類2, var.equal=TRUE)
 
 	One-way analysis of means
 
 data:  全グループ and 薬の種類2
 F = 2.102, num df = 5, denom df
 = 6, p-value = 0.1961
日本語なんて使うと,特に Windows の場合は入力は面倒くさいし,見た目が同じようなフォントのため今回のような発見の難しいバグを発生させたり,ろくな事ないですよ。今回は該当しなかったけど,全角空白があったりすると,七転八倒することもある。(エディタで検索すればどうってことないけど,初心者はドツボに嵌まるだろうか)~
 > x <- c(0.214868106,0.130905896,
 + 0.363994669,0.133351903,
 + 0.314337464,0.33376496,
 + 0.24814533,0.435896438,
 + 0.460955618,0.348227084,
 + 0.479455052,0.4087283)
 > drug <-factor(rep(LETTERS[1:6], each=2))
 > drug
  [1] A A B B C C D D E E F F
 Levels: A B C D E F
 > oneway.test(x~drug, var.equal=TRUE)
 
 	One-way analysis of means
 
 data:  x and drug
 F = 2.102, num df = 5, denom df = 6, p-value = 0.1961
どれだけ簡単か。 --  &new{2019-01-11 (金) 18:45:13};
- ありがとうございました。 -- [[r]] &new{2019-01-15 (火) 08:57:40};

#comment

**下位互換ではないmatrixの行の抽出 [#l84ddf95]
>[[tuji]] (2019-01-04 (金) 20:29:05)~
~
お世話になります。~
複数の要素を持つものを比較したときに、他のものそれぞれと比較していずれか要素で大きな値を示す、下位互換ではない(パレート最適である)ものを抽出したいです。~
実際は遺伝に関するデータで100*100*100*200行程度、30程度の要素を比較したいと考えています。~
例として1クラス40名にトランプを各スート毎に1枚ずつランダムに配って、スート毎に大きいほうが勝つというようなゲームを考え~
クラス内の誰に対しても、すべてのスートで負けてしまうことはない生徒をピックアップすることをしました。~
下記スクリプトにより問題なく計算はできました。しかし冗長に感じます。~
もし有効な関数・パッケージ等ご存知でしたら、教えていただけませんでしょうか。~
 pop <- 40
 suit <- 4
 mymat1 <- matrix(as.integer(runif(pop * suit,1,14)), pop,suit)
 #40名にスーツごとに(無限セットの)トランプから1枚を配る
 mymat2 <- cbind(1:pop, mymat1[order(-mymat1[,1],-mymat1[,2],-mymat1[,3],-mymat1[,4]),])
 #最初のスーツの順で並べ替え、各名にIDを振る。スーツが増えた場合スクリプトを書きかえなければいけない
 compatible <- as.logical(numeric(pop))
 #誰の下位互換でもない場合をT、そうでない場合をFとする用の論理値ベクトル
 myfunc <- function(x, y){
  any(x > y) | setequal(x, y)
 }
 tm <- mymat2
 #並べ替えているため、最初のIDは必ず誰の下位互換でもない
 for (u in 1:pop){
   Limit <- apply(tm[,-1],1,myfunc,tm[1,-1])
   #applyで行毎に判定するのとは別に、行が増えたとき用に
   #tm[,2] > tm[1,2] | tm[,3] > tm[1,3] | tm[,4] > tm[1,4] | tm[,5] > tm[1,5] | apply(tm[,-1],1,setequal,tm[1,-1])
   #と書く方がよいでしょうか?
   compatible[tm[Limit,][1]] <- T
   #tmの1行目に来るIDの下位互換ではない次のIDは必ず誰の下位互換でもない。
   #IDの1列目がcompatibleの要素にアクセスするために必須になっている。
   tm <- tm[Limit,][-1,]
   #tmの1行目と1行目の下位互換のIDを省く  
   print(u)
   if (length(tm) == suit + 1) {
     compatible[tm[1]] <- T
     break
   }
 }
 mymat2[compatible,] #確認用

//
- 提示されたプログラムをコピー・ペーストして何回も実行すると,ときにより(?) tm[Limit, ][-1, ] でエラー:  次元数が正しくありません &br;という,エラーが出ますね&br;どこか,不完全なプログラムになっているのかな?&br;「下位互換ではないmatrixの行の抽出」というタイトルが付けられていますが,これが,一般的な問題に対する,一般的なプログラムかどうか,私には分かりませんが。&br;何はともあれ冗長であっても,許容できる時間内に「正しい」答えがでるのならば,それで良いではないですか。「正しい」答えが出ないのなら問題ですが。&br;許容範囲というのは異論があるでしょうが,一ヶ月に一回ほど実行するプログラムなら,実行時間が一時間でも問題ないのではないかなとも思います。寝ている時間にやってくれればよいでしょうしね。毎日やるプログラムならまあ10分かな。これも,寝てるうちにやってくれれば問題ない。 --  &new{2019-01-04 (金) 21:52:34};
- 上のプログラムが正しいとして,行数40000,要素数30で私のコンピュータでは for ループ1回回るのに0.3秒かかるようなので,100*100*100*200行あると,100*100*100*200*0.3/(60*60*24*365) = 1.9 年掛かるようですWWW。&br;行数に比例するので,行数が10倍の400000行になると,1回回るのに 3 秒掛かります。したがって,100*100*100*200 行あると,実行に950年かかる?--  &new{2019-01-05 (土) 11:35:55};
- ご回答ありがとうございます。即日の回答で嬉しい限りです。 時により出るエラーはおっしゃる通りループを抜ける判断をさせる if (length(tm) ==suit + 1)が未完成だったからのようです。 エラーで抜けるんだからいいかとやっていたのですが、ここで質問する前に手直したつもりで、不完全でした。  行数が増えるほどループ序盤は比例的に時間がかかります。 いったん下位互換であると判定された行は以降計算されないので、 オールマイティーな行が1つあればそこからは短縮されます。 現実問題を解くときは、要素が増えていった時に、「互いに上位互換でも下位互換でもないグループ」で分割して時間短縮しています。 おっしゃられる通りなんであれ時間内に解ければいいさと気軽に思いつつも、スマートなやり方に憧れます。 -- [[tuji]] &new{2019-01-05 (土) 14:53:59};
- 時間はまあよいやということですが,メモリの方はどうですか? --  &new{2019-01-05 (土) 16:12:46};
 > pop <- 100*100*100*200
 > suit <- 30
 > mymat1 <- matrix(as.integer(runif(pop * suit, 1, 14)), pop, suit)
  エラー:  ベクトルのメモリを使い切りました (上限に達した?)
- 約100*100*200行の30列が734Mbです。次の組み合わせの100倍はメモリの都合上入れようがないですね・・・ -- [[tuji]] &new{2019-01-05 (土) 20:42:13};

#comment

**dplyr でfilter を使っていたら急にエラーが出始めました [#w3ebd6b1]
>[[ポンタ]] (2018-12-27 (木) 22:07:12)~
~
お世話になります。~
初めて投稿します。~
昨年(2017年)会社でRを入れてもらえるようになり、本業の傍らで、データの分析を始めたものです。~
~
本日、会社のPC(windows7 32bit)でR(3.4です。RStudioは入れてません)を使ってdplyr::filterを動かしていたら、急にエラーが出始めました。(理由が良くわかりません。勝手にRを再インストールできる現場でもありません)~
~
Error in filter_impl(.data, quo) :~
Evaluation error: `as_dictionary()` is defunct as of rlang 0.3.0.~
~
~
ネットで調べていたら、~
https://github.com/tidyverse/dplyr/issues/3941~
に同じエラーメッセージが出ていましたが、どのように対応したらよいのか良くわかりません。~
~
rlangというのが悪さをしているようなのでこれの1つ前のバージョン(rlang_0.2.2.tar.gz)を入れなおし、dplyrとRcppも入れなおしましたが、エラーのままです。~
~
どのようにすれば、エラーが出なくなるかご教示頂けないでしょうか?~

//
- defunct の意味はご存じない?(古くなって)廃止された(機能していない)ということです。&br;古いバージョンを入れ直すというのは,大間違い。全てを新しくしてみる事をお勧めします。&br;R はつい先日 3.5.2 になりましたし,rlang も 0.3.0.1 になってますよ。&br;それに,なにをやったらそのエラーメッセージが出たのかわかりませんね。&br;少なくとも,示されたページにあった例を入れた限りでは,何のエラーも出ませんでしたね。&br;勝手にRをインストールできない環境というのも,理解はできますが,だったら,然るべき権限を持っている人にお願いして,Rの最新版をインストールしてもらう。それができないなら(ライブラリは勝手にインストールできるといっているようなんだけど変だね),dplyr / rlang だけでも最新版にしてみたら? --  &new{2018-12-28 (金) 11:17:06};
 R version 3.5.2 (2018-12-20) -- "Eggshell Igloo"
 Copyright (C) 2018 The R Foundation for Statistical Computing
 Platform: x86_64-w64-mingw32/x64 (64-bit)
 
 R は、自由なソフトウェアであり、「完全に無保証」です。 
 一定の条件に従えば、自由にこれを再配布することができます。 
 配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。 
 
 R は多くの貢献者による共同プロジェクトです。 
 詳しくは 'contributors()' と入力してください。 
 また、R や R のパッケージを出版物で引用する際の形式については 
 'citation()' と入力してください。 
 
 'demo()' と入力すればデモをみることができます。 
 'help()' とすればオンラインヘルプが出ます。 
 'help.start()' で HTML ブラウザによるヘルプがみられます。 
 'q()' と入力すれば R を終了します。 
 
 > utils:::menuInstallPkgs()
  --- このセッションで使うために、CRAN のミラーサイトを選んでください --- 
  URL 'https://cran.ism.ac.jp/bin/windows/contrib/3.5/dplyr_0.7.8.zip' を試しています 
 Content type 'application/zip' length 3069918 bytes (2.9 MB)
 downloaded 2.9 MB
 
  パッケージ ‘dplyr’ は無事に展開され、MD5 サムもチェックされました 
 
  ダウンロードされたパッケージは、以下にあります 
         C:\Users\user\AppData\Local\Temp\RtmpE9GCqc\downloaded_packages 
 > library(dplyr)
 
  次のパッケージを付け加えます: ‘dplyr’ 
 
  以下のオブジェクトは ‘package:stats’ からマスクされています: 
 
      filter, lag 
 
  以下のオブジェクトは ‘package:base’ からマスクされています: 
 
      intersect, setdiff, setequal, union 
 
 > data.frame(a=10) %>% filter(a>4)
    a
 1 10
 > sessionInfo()
 R version 3.5.2 (2018-12-20)
 Platform: x86_64-w64-mingw32/x64 (64-bit)
 Running under: Windows 10 x64 (build 17134)
 
 Matrix products: default
 
 locale:
 [1] LC_COLLATE=Japanese_Japan.932  LC_CTYPE=Japanese_Japan.932   
 [3] 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] bindrcpp_0.2.2 dplyr_0.7.8   
 
 loaded via a namespace (and not attached):
  [1] tidyselect_0.2.5 compiler_3.5.2   magrittr_1.5     assertthat_0.2.0
  [5] R6_2.3.0         tools_3.5.2      pillar_1.3.1     glue_1.3.0      
  [9] tibble_1.4.2     crayon_1.3.4     Rcpp_1.0.0       pkgconfig_2.0.2 
 [13] rlang_0.3.0.1    purrr_0.2.5      bindr_0.1.1     
 > library(dplyr)
 > data.frame(a=10) %>% select(a)
    a
 1 10
 >
- ありがとうございました。新年になってRのバージョンアップを行ってもらったら動くようになりました。 -- [[ポンタ]] &new{2019-01-10 (木) 23:05:22};

#comment

**TIFF画像を用いた衛星画像の土地被覆分類に関して [#nfd13a3f]
>[[jun]] (2018-12-16 (日) 18:49:05)~
~
衛星画像の土地被覆分類をSVMを用いて行いたいと考えているのですが、R初心者のため手順が全くわかりません。~
簡単で構いませんので手順を教えていただけると幸いです。~
~
画像の赤、青、緑、近赤外の各バンドの画素値の抽出まではしているのでそこからどのような手順を踏めばいいのかわかっていない状況です。~

//

#comment

**「他の因子で調整した生存曲線」に関して [#p42fffac]
>[[pinoj]] (2018-12-06 (木) 20:53:46)~
~
ハザード比を出す方法に関する質問をさせて頂きたく思います。~
~
例えば、生存期間を決定する因子として、以下の3つの因子が見つかったとします。~
~
性別、年齢、喫煙(すべて01因子とします)~
~
群別する変数に「性別」を、調整に用いる変数に「年齢と喫煙」を設定した場合、~
これらの因子で調整した性別に関する生存曲線は、下記のコマンドで作成できました。~
~
coxmodel <- coxph(Surv(Days,Survival==1)~ age + smoking + strata(sex), data=dat, method="breslow")~
cox <- survfit(coxmodel)~
plot(cox)~
~
上記で、2本のカーブを描くことができました。~
~
しかしながら、この性別の2群間のハザード比(および95%信頼区間)を出す方法がわかりません。~
~
print(coxmodel)~
~
を入力すると、性別ではなく、その他の2因子(年齢と喫煙)に関するハザード比しか得られません。~
恐れ入りますが、どうかご教示をお願い申し上げます。~

//

#comment

**ダミー変数を含む交互作用項を含む重回帰分析について [#d8e35b45]
>[[hisapon]] (2018-12-01 (土) 16:02:58)~
~
pequodよりlmresを使用して交互作用項を含む3要因の重回帰分析をしておりますが、その交互作用項が連続変数×ダミー変数の場合でも、以下のような式で大丈夫でしょうか。~
 
従属変数:dep   独立変数1(連続変数):ind1 独立変数2(連続変数):ind2   独立変数3(ダミー変数):ind3.dummy~
lmres(dep~ind1*ind2*ind3.dummy,centered=c("ind1","ind2","ind3.dummy"),data=dat)  ~
 
ダミー変数である独立変数3を中心化させる必要があるのか、また、その後の単純効果分析ではsimpleSlope(・・・,pred="ind1",mod1 = "ind2",mod2="ind3.dummy")で分析を進めれば、-1SDと+1SDで高低群が決定されて効果分析が行われますが、そもそもind3.dummyが0,1の値しかとらないデータとなるとsimpleSlope(・・・,pred="ind1",mod1 = "ind2",mod2="ind3.dummy")で分析しても正確な結果は出てこないのではないかと考えております。~
 
このあたりのことについて教えていただけると有難いです。あるいは、ダミー変数を含む複数要因の重回帰分析でlmres以外の手法でよい方法や手順があればご教示いただきたいです。よろしくお願いいたします。~

//
- 当然ながら,&br;Little, T. D., Bovaird, J. A., & Widaman, K. F. (2006). On the Merits of Orthogonalizing Powered and Product Terms: Implications for Modeling Interactions Among Latent Variables. Structural Equation Modeling, 13(4), 497-519.  Cohen, J., Cohen, P.,West, S. G.,&Aiken, L. S. (2003). Applied multiple regression/correlation analysis for the behavioral sciences (3rd ed.). Mahwah, NJ: Lawrence Erlbaum Associates, Inc.~
は,全てご覧になってのことでしょうね。だとしたら,何の助言もできません(すみません) --  &new{2018-12-04 (火) 21:21:50};

#comment

**多重代入後の解析、統合につきまして [#x9c9affc]
>[[noria]] (2018-11-28 (水) 00:49:28)~
~
皆様お世話になります。~
欠損値のあるデータの多重代入後の解析、統合方法についてお教え頂けないでしょうか。~
現在、多重代入はAmeliaパッケージ、解析はsurv IDINRIパッケージを用いて2つのモデルのNRIとIDIを求めたいと思っています。下記のスクリプトを入力しましたところ、多重代入(n=5)後の5つの結果を算出できましたが、これをどのようにして統合して良いのか分かりません。お忙しいところ恐縮ですがご教授ください。~
~
スクリプト~
dat1 <- read.csv("/Users/###/Desktop/dat1.csv")~
library(Amelia)~
x = data.frame~
m = 5~
dat1 <- subset(dat1, select=c("time","status","age","copd","nn","dm","bb","ras"))~
dat1.out <- amelia(x = dat1, m = 5)~
library(survIDINRI)~
for(i in 1:m){~
 idinri <- dat1.out$imputations[[i]]
 D = subset(idinri, select=c("time","status","age","copd","nn","dm","bb","ras"))
 D$status = as.numeric(D$status==1)
 D=D[!is.na(apply(D, 1, mean)),]; dim(D)
 mydata = D
 t0 = 365
 indata1 = mydata;
 indata0 = mydata[,c(-3)]; n=nrow(D);
 covs1 <- as.matrix(indata1[,c(-1,-2)])
 covs0 <- as.matrix(indata0[,c(-1,-2)])
 x <- IDI.INF(mydata[,1:2],covs0,covs1,t0,npert=200)         
~
 IDI.INF.OUT(x);
 }
~
結果~
     Est.  Lower Upper p-value~
M1 0.034  0.000 0.109   0.030~
M2 0.203 -0.027 0.402   0.060~
M3 0.001 -0.008 0.154   0.607~
    Est.  Lower Upper p-value~
M1 0.039  0.002 0.127   0.020~
M2 0.203  0.019 0.377   0.030~
M3 0.002 -0.010 0.162   0.517~
       Est.  Lower Upper p-value
M1 0.041  0.002 0.138   0.020~
M2 0.203 -0.018 0.367   0.060~
M3 0.001 -0.008 0.139   0.488~
       Est.  Lower Upper p-value
M1 0.033 -0.001 0.135   0.090~
M2 0.130 -0.203 0.392   0.109~
M3 0.002 -0.010 0.210   0.547~
     Est.  Lower Upper p-value~
M1 0.031  0.000 0.119   0.070~
M2 0.203  0.000 0.368   0.050~
M3 0.001 -0.007 0.187   0.498~

//
- 統合ってどういうことをしようとしているの?&br;関係ないけど multiple imputation を多重代入と訳すのは,impute と input を混同している気がする。多重補完でいいんじゃない? --  &new{2018-11-28 (水) 14:38:05};
- お返事ありがとうございます。つまり、プールされた推定値と信頼区間、P値を求めたいと思っています。 --  &new{2018-11-28 (水) 16:57:17};
- お返事ありがとうございます。つまり、プールされた推定値と信頼区間、P値を求めたいと思っています。 --  &new{2018-11-28 (水) 17:39:30};
- 全部のデータを使って分析するだけじゃダメなの?そうでなきゃ,それなりのアルゴリズムがあるんでしょうが。 --  &new{2018-11-28 (水) 23:36:56};
- メタアナリシスということなら,一般的にはプールされた推定値は各推定値の平均または重み付きの平均, P 値は単にその推定値から求めるということ。信頼区間も平均値とプールされた標準誤差から求めると。&br;そもそも,先行研究はないの?&br;投稿方法も,不細工だし。--  &new{2018-11-28 (水) 23:58:09};
- ありがとうございました。参考にさせて頂きます。 --  &new{2018-11-29 (木) 00:54:14};
- 多重代入法(多重補間法,どっちでもいい気がしますが)の統合ステップでは5個の推定値を平均して良いはずです。しかし補間の標準誤差を計算するにはすこし手間がかかります。Little & Rubin(2002)の5章に詳しいですね。多重代入の考え方では欠測値に代入して得られた推定値にもランダムネスが考慮されるべきですから,統合した推定値(1つ)でp値を求める方法は不適切な気がします。 --  &new{2018-11-29 (木) 19:48:23};
- 推定値は平均するだけで良いのですね。信頼区間とP値を算出するのは難しそうですね。ご丁寧に教えて頂き、ありがとうございました。 --  &new{2018-11-30 (金) 03:11:47};

#comment

**重回帰分析時のエラーについて [#a4bad2a6]
>[[-0.889]] (2018-11-27 (火) 15:44:27)~
~
初心者です。~
Ri386 3.4.3をwindows7professionalで使用しています。~
1列目を目的変数として2~8列目を説明変数とした重回帰分析を行おうと以下の入力を行ったところ、~
> result1 <-lm(data[,1]~data[,2]+data[,3]+data[,4]+data[,5]+data[,6]+data[,7]+data[,8])~
Error in data[, 1] : object of type 'closure' is not subsettableというエラーメッセージが表示されてしまいます。~
解決法などご教示頂けると助かります。~

//
- dataという名前のmatrixないしdata.frameを先に定義していますか? --  &new{2018-11-27 (火) 16:14:24};
- コピー&ペースト法によってデータを定義しています。 -- [[-0.889]] &new{2018-11-27 (火) 16:43:34};
- されていないので出ているエラーです。エラーの直後にstr(data)などされてみては? --  &new{2018-11-27 (火) 16:47:08};
- 「str(data) したら,なんかでたのですが」なんて,応答がありそうなので,単に data とやって,何がでるか見れば,データが入力できていないことが納得できるでしょう。 --  &new{2018-11-27 (火) 18:09:49};
- たしかにそうですね。関数としてのdataの実体が長く表示されるより、functionであることが短く読み取りやすいほうが良いかと、strを使った回りくどい聞きかたをしてしまいました。大変申し訳ございませんでした。 --  &new{2018-11-27 (火) 18:20:24};
- レスが遅くて申し訳ございません。dataと入力したら8列のデータが表示されました。ちなみにsummaryとすると平均値などが表示されます。 -- [[-0.889]] &new{2018-11-30 (金) 17:20:53};
- dataと打ってその8列のデータが表示される直前/直後では、上記のエラーは出ないはずなのですがねえ。「解析対象としての変数dataを未定義な状態で、解析の行だけ実行したのだろうな」というのが容易に想像できてしまう状況だけに不思議です。特殊なスコープを持っているなんてことがあるのでしょうか。別セッションを同時に開いているとか、debug環境を抜けてるかどうか把握されていないとか、なにか単純な勘違いだと思いますよ。本当にdataが変数としてある状態なのなら、それを(デフォルトで存在する関数名とかぶらない)別の名前の変数にコピーしてから同様の解析をすれば、とりあえず「closureだ云々」というエラーは出なくなるので問題が切り分けやすいかもしれません。 --  &new{2018-11-30 (金) 20:20:24};
- > コピー&ペースト法によってデータを定義し&br;その後で,&br;result1 <-lm(data[,1]~data[,2]+data[,3]+data[,4]+data[,5]+data[,6]+data[,7]+data[,8])&br;ってやったら,そんなエラーは出るわけないと思いますけど?&br;data とコンソールに打ち込んで,データが表示された後で,&br;result1 <-lm(data[,1]~data[,2]+data[,3]+data[,4]+data[,5]+data[,6]+data[,7]+data[,8])&br;を入力してもらえますか?どうなります?~
あなたが実際にやった(と思っている?)ことを正確に伝えていないので,何がどうなったか判断できないのです。あなたがやったことがわかるためには,コンソールの出力そのものを(省略可能な部分は省略する--判断は難しかも知れないけど)見せるのが手っ取り早いのですけどね。~
毎回コピー&ペースト法でデータ入力をするというのは,面倒くさいし(データが大きいと余計に),ヒューマンエラーで訳の分からないことになる可能性が大きいのですから,初心者だからこそ!!,データはファイルに用意して read.csv なりで読み込んで分析するという,定石中の定石をマスターすることをお勧めします。そうすれば,あなたが実際にどのようにやったかを示すためのコンソールへの出力も少なくなり,なにをやったかはっきり分かるというものです。あなたがやったことがちゃんと分からないと,助言のしようがないのですよ。 --  &new{2018-11-30 (金) 20:58:31};
- レスが遅くて申し訳ございません。dataと入力したら8列のデータが表示されました。その後、result1 <-lm(data[,1]~data[,2]+data[,3]+data[,4]+data[,5]+data[,6]+data[,7]+data[,8])と入力すると、Error in data[, 1] : object of type 'closure' is not subsettableと表示されてしまいます。 -- [[-0.889]] &new{2018-12-06 (木) 15:51:57};

#comment

**コピー&ペースト方式の読み込み量の制限について [#fbf34ed7]
>[[-0.889]] (2018-11-16 (金) 15:50:38)~
~
初心者です。~
Ri386 3.4.3をwindows7professionalで使用しています。~
重回帰分析を行いたいため、エクセルのファイルデータをコピー&ペーストするとエラーがでます。~
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  : ~
  line 59 did not have 5 elements
4列までは、ペーストできるのですが、5列以上はエラーとなります。~
コピー&ペースト方式には、ペーストできる量に制限があるのでしょうか。また、解決法などご教示いただけけると助かります。~
よろしくお願い致します。~

//
- 書かれているとおりです。"line 59 did not have 5 elements"「59行目は要素が5個ではありませんよ」とね。59行目にデータが幾つあるか確認してご覧なさい。&br;多分,欠損値があって,空白セルがあるんでしょう。R では欠損値は NA で表さなければならないのですから,空白セルに NA をぶっ込めばよいでしょう。 --  &new{2018-11-16 (金) 16:09:43};
- 有難うございました。 -- [[-0.889]] &new{2018-11-16 (金) 16:37:28};

#comment

~
~

**httrパッケージにおけるPOST関数のURLエンコード [#c631fb0a]
> (2018-11-11 (日) 12:32:06)~
~
以下の投稿は,「[[投稿における注意事項]]」に反する方法で掲載され,投稿フォームを破壊した上,ページの構成を乱しました。~
「[[投稿における注意事項]]」および「[[投稿文書の書式:http://www.okadajp.org/RWiki/?%E6%95%B4%E5%BD%A2%E3%83%AB%E3%83%BC%E3%83%AB]]」をよく読むよう,注意喚起しておきます。~
~
httrパッケージにおけるPOST関数のURLエンコードについて。あるURLからデータを取得するため、httrパッケージのPOST関数を使用しています。その中で引数bodyに日本語をしているのですがPOST関数はUTF-8でURLエンコードを行っているようです。データ取得先のサーバーに合わせてSHIFT-JISでURLエンコードを行いたいのですが方法はありますでしょうか。~

//

#comment


**判別分析における定数項のずれについて [#o36bc17a]
>[[東京都下]] (2018-10-15 (月) 17:00:39)~
~
皆様始めまして~
~
過去の業務の統計部分を引き継ぐことになり、いちから勉強しています。~
2群の直線判別分析を行っているのですがRがpredict計算で出す判別結果と関連係数を組み合わせ手計算で出す結果の値が異なっていました。~
結果を再度見てみると定数項が違うことに気づきました。~
~
lda関数を利用した判別関数の定数項導出でもし留意点などございましたらご教示ください~
~
変数は2つしかなくてたとえばa,bとして~
~
result <- lda(y~a+b)~
predict_result <- predict(result)~
result$means~
result$scaling~
 LD1
a ***~
b ***~
~
result$means%*%result$scaling~
apply(result$means%*%result$scaling,2,mean)~
★ここで定数項が出る~
~
とやってみました。~
aとb(係数)については問題ないのですが、定数項があいません。~
~
「あわない」というのは同じデータを別のソフトで解析して出した結果と比較してみて分かったものです。predictで出す判別結果とそのソフトで出す結果の数値はぼぼ同じでした。~
~
今扱おうとしているデータ25000件位有り、2つの整数数値列+1カテゴリーのデータです。具体データは出せないのでもうしわけないのですが、いくつかネット上のサンプル(10*2のデータ)で実施したところ問題はありませんでした。~

//
- 具体例が出せなくても,架空のデータでよいので小規模なデータを分析期した結果を示せば良いのですよ。 --  &new{2018-10-15 (月) 17:31:51};
 > y = factor(rep(0:1, c(5, 7)))
 > a = c(3,2,2,3,4,5,6,4,4,2,3,4)
 > b = c(3,2,3,4,5,4,3,7,6,5,4,6)
 > library(MASS)
 > result <- lda(y~a+b)
 > predict_result <- predict(result)
 > result$means
     a   b
 0 2.8 3.4
 1 4.0 5.0
 > result$scaling
         LD1
 a 0.5955855
 b 0.5845561
 > result$means%*%result$scaling
        LD1
 0 3.655130
 1 5.305123
 > apply(result$means%*%result$scaling,2,mean)
      LD1 
 4.480126
- lda の predict 結果の predict_result$x は全体の平均値が 0 になるように定数項の調整が行われている --  &new{2018-10-15 (月) 17:54:16};
 > predict_result$x
           LD1
 1  -1.0772009
 2  -2.2573426
 3  -1.6727864
 4  -0.4926448
 5   0.6874968
 6   0.6985262
 7   0.7095556
 8   1.8566091
 9   1.2720530
 10 -0.5036742
 11 -0.4926448
 12  1.2720530
 > mean(predict_result$x)
 [1] -3.515345e-16
- 世の中には,各群の平均値の中間点が0になるように定数項を設定したいと思う人もいてですね --  &new{2018-10-15 (月) 17:58:34};
 > pred <- cbind(a, b) %*% result$scaling
 > pred
            LD1
  [1,] 3.540425
  [2,] 2.360283
  [3,] 2.944839
  [4,] 4.124981
  [5,] 5.305123
  [6,] 5.316152
  [7,] 5.327181
  [8,] 6.474235
  [9,] 5.889679
 [10,] 4.113952
 [11,] 4.124981
 [12,] 5.889679
 > offset <- apply(result$means%*%result$scaling,2,mean)
 > offset
      LD1 
 4.480126 
 > pred2 <- pred-offset # offset を調整する!!
 > mean(pred2[1:5])
 [1] -0.8249962
 > mean(pred2[6:12]) # これで,2 群の判別値の平均値の真ん中が 0 になる
 [1] 0.8249962
- ちなみに,まれにではあるが判別値の平均値が0で,分散が1になるように調整したい人もいて,その場合には,判別係数もぱっとみたところ違って,びっくらこく人もいるとかいないとか(比例しているんだけど) --  &new{2018-10-15 (月) 18:30:35};
- 質問者です。ありがとうございます。predictの平均で調整するようにしたら小数点以下6桁までzeroになりました。ありがとうございました。重ねて質問で申し訳ないのですが、この値を一律とは言え調整していると言うことはこの値の正負だけをみてはいけないのですね。といいますのも、それまでは、予測結果が判別関数(この場合、直線)からどの程度ずれているかを端的に数値で示すのはこの数値だと考えていまして。散布図を書けば傾向は分かるのですが数字で説明しないと行けなくて。 -- [[東京都下]] &new{2018-10-15 (月) 18:32:45};
- 値の正負から判定するならば2群の判別値の平均値の中間が原点になるように定数項を決めましょうということですよ。もとの変数の2次元散布図で示したいのなら,もとの変数の平均値の中間をとおる判別直線を描けばよいだけでしょう。&br;いずれにしても,ある分析プログラムが判別値をどのように計算しているのか,自分の理解と違いはないかを確認すればよいだけでは? --  &new{2018-10-15 (月) 18:43:25};
- 質問者です。上記の「世の中には,各群の平均値の中間点が0になるように定数項を設定したい・・・」のくだりからですね。ありがとうございました。以降の回答も拝見し結果を確認いたしました。これでクローズしたいと思います。今後ともよろしくお願いいたします。 -- [[東京都下]] &new{2018-10-15 (月) 18:53:55};

#comment

**リストの名前と要素を2列の表形式に保存 [#w4fc23b8]
>[[nkrit]] (2018-10-11 (木) 20:48:13)~
~
初心者です。~
lst <- list(A=c(1), B=c(2,3), C=c(3,4,5))~
のようなリストがありまして、これを~
A 1~
B 2,3~
C 3,4,5~
のような2列の表形式に保存したいと考えましたが、~
lapply(lst, function(x) write(x, "data", append=T))~
これでは、A, B, Cなどの名前が入りませんし、どうしたら簡潔でスマートなのか、思いつかず、困っております(実際は、もっと要素の多いリストなので、手作業でやるのは、かなり骨が折れます)。お忙しいところを恐縮ですが、ご助言いただけましたら、幸いに存じます。~

//
- 名前と値のリストの区切りを空白にするかタブにするかは選んでください。一応,以下のようにすれば,少なくとも見た目はご希望のようなものになるでしょうが,それがはたして効率のよいものであるかどうか?まあ,頭の体操ということで。 --  &new{2018-10-11 (木) 21:27:46};
 > junk = mapply(function(x, y) {cat(x, "\t", sep=""); cat(y, sep=","); cat("\n")}, names(lst), lst)
 A	1
 B	2,3
 C	3,4,5
- 早速ありがとうございます。こんなことができるのですか! できれば、これをファイルに保存したいのですが、このjunkというのもリストなので、write(junk) とすると、 「cat(list(...), file, sep, fill, labels, append) でエラー:     引数 1 (タイプ 'list') は 'cat' で取り扱えません」と出てしまい、print(junk)やcat(junk)もうまくいかないので、もし可能でしたら、ファイル出力できるところまでご指導ください。勝手を申しましてすいません。 -- [[nkrit]] &new{2018-10-11 (木) 21:59:46};
- junk はコンソールに余計なものを出さないためだけのもの --  &new{2018-10-11 (木) 23:08:49};
 lst <- list(A=c(1), B=c(2,3), C=c(3,4,5))
 con <- file("out.dat", "w")
 junk <- mapply(function(x, y) {cat(x, "\t", sep="", file=con, append=TRUE); cat(y, sep=",", file=con, append=TRUE); cat("\n", file=con, append=TRUE)}, names(lst), lst)
 close(con)
- ありがとうございます。今は、まだこのからくりがよくわからないのですが(特にmapplyの中でリストをcatしているはずなのにエラーにならない理由)、そのうち合点がいくようになるように、精進したいと思いました。 -- [[nkrit]] &new{2018-10-11 (木) 23:30:37};
- 以下のような方法も。
 cat(paste(names(lst), lapply(lst, paste, collapse = ","), sep = "\t"), sep = "\n", file = "lst.txt")
行名と以降の区切りや、値間の区切りはpasteのsepとcollapseで適宜変えてください。 --  &new{2018-10-12 (金) 10:29:54};
- ご丁寧にありがとうございます。こちらは、初心者の私にもわかりやすく、lapply(lst, paste, collapse = ",") のところがいろいろ応用できそうで、感動しました。勉強させていただきました。。 -- [[nkrit]] &new{2018-10-12 (金) 12:46:01};

#comment

**欠損値を含むデータフレームの各列から欠損値だけ抜いて、リストに格納して、次の解析に使いたい [#dd1cdd2d]
>[[nkrit]] (2018-10-04 (木) 02:49:41)~
~
欠損値を含むデータフレームの各列から欠損値だけ抜いて、それぞれリストに格納して、次の解析に使いたいのですが、ほとんど手作業のようなコードしか書けずに悩んでいます。~
NAのある行をそっくり抜くのではなく,A1なら2要素、A2なら1要素A3なら3要素とも残したいのですが。~
どうすればRらしく、すっきりと書けるのでしょうか。何卒よろしくお願いいたします。~
~
df <- data.frame(A1=c("a","b",NA),A2=c("c",NA,NA),A3= c("d","e","f"))~
g1 <- df[,"A1"]~
g1 <- g1[!is.na(g1)]~
g2 <- df[,"A2"]~
g2 <- g2[!is.na(g2)]~
g3 <- df[,"A3"]~
g3 <- g3[!is.na(g3)]~
lst <- list(g1,g2,g3)~
names(lst) <- c("A1","A2","A3")~

//
- lapply(df, na.omit) とするか,それとも,lapply(df, function(x) x[!is.na(x)]) とするか --  &new{2018-10-04 (木) 03:00:33};
- 早速、恐縮に存じます。na.omit(df)では駄目だしとか、悩んでいました。lapplyについてはちゃんと使えるようにしなければと思いながら、具体的なイメージが作れませんでした。今回、霧がぱっと晴れました。ありがとうございました。 -- [[nkrit]] &new{2018-10-04 (木) 03:35:48};
- 早速、恐縮に存じます。na.omit(df)では駄目だしとか、悩んでいました。lapplyについてはちゃんと使えるようにしなければと思いながら、具体的なイメージが作れませんでした。今回、霧がぱっと晴れました。ありがとうございました。 -- [[nkrit]] &new{2018-10-04 (木) 04:15:44};

#comment

**日本語のマルチバイト化 [#o7741310]
>[[うどん]] (2018-10-03 (水) 23:07:32)~
~
初心者です。~
R, Rstudioをmacで使っています。どちらも最新のものにアップデート済です。~
~
no,city,facility_category,facility_name,site,lat,lon,sta,fin~
No002,01室蘭,Harbor,崎守埠頭,3,42.365545,140.931244,0,24~
No003,05登別,Station,JR登別,9,42.452047,141.180894,9,17~
~
上記のようなcsvファイルを読み込むと、下記のように日本語の部分だけマルチバイト化して表示されてしまいます。~
~
~
No002	01\216\272\227\226	Harbor	\215\350\216\347\225u\223\252	3	42.36554	140.9312	0	24~
No003	05\223o\225\312	Station	JR\223o\225\312	9	42.45205	141.1809	9	17~
~
~
一通り調べてみたのですが、エラーも出ず、文字化けでもないようなのでエンコードの問題でもなさそうです。~
Rstudio上でfilesから該当ファイルをview fileで読み込むと正常に表示されるのですが、import datasetだとやはりマルチバイトのようになってしまいます。~
~
何か解決策はないでしょうか。よろしくお願いします。~

//
- 立ち上げたときに,赤字で以下のようなメッセージ出てませんか?&br;立ち上げた後,一度 Sys.setlocale("LC_ALL", "ja_JP.UTF-8") って,入力してみて... --  &new{2018-10-04 (木) 02:51:19};
 During startup - Warning messages:
 1: Setting LC_CTYPE failed, using "C" 
 2: Setting LC_COLLATE failed, using "C" 
 3: Setting LC_TIME failed, using "C" 
 4: Setting LC_MESSAGES failed, using "C" 
 5: Setting LC_MONETARY failed, using "C" 
#comment

**RMeCabC("すもももももももものうち")、で落ちる [#pbf23054]
>[[pkopw2]] (2018-09-24 (月) 12:27:12)~
~
library(RMeCab)~
res <- RMeCabC("すもももももももものうち")~
~
2行目を入力したとたんに、落ちてしまいます。エラーメッセージもありません。~
Rは64/32bitのいずれも試しましたが、同じ現象でした。~
どこがにミステイクがあるのでしょうか。どうかよろしくお願いします。~
~
install.packages("RMeCab", repos = "http://rmecab.jp/R") でダウンロードしました。~
使用環境:windows10pro(64bit)、R3.4.1 です。~

//
- MeCabはインストールしましたか? --  &new{2018-09-25 (火) 00:57:59};
- ご回答どうも有難うございます。インストールしたらいけました。大変失礼いたしました。 -- [[pkopw2]] &new{2018-09-26 (水) 21:33:47};

#comment

**データフレームにおける値の変換 [#h9c7c3fe]
> (2018-09-22 (土) 22:17:08)~
~
下記の変換用データフレームと変換前データフレームがあった時、~
変換後データフレームを生成するにはどのようなコードを書けばよいでしょうか。~
~
変換用データフレームは値の上限と下限、変換する値の3項目を持ちます。~
変換前データフレームの変数vの範囲を判定して、変換用データフレームの値に変換したいです。~
~
なお実際はどのデータフレームも件数が数千件ほどあります。~
~
変換用データフレーム~
lower,upper,value~
0,1,7~
1,2,5~
2,3,4~
3,4,3~
~
変換前データフレーム~
v~
1.5~
2.5~
~
変換後データフレーム~
v,w~
1.5,5~
2.5,4~

//
- > なお実際はどのデータフレームも件数が数千件ほどあります&br;って,変換用データフレームも数千件もあるの?なわけないよね。 --  &new{2018-09-23 (日) 00:06:40};
- 変換用データフレーム,「lower 以上,upper 未満」だよね。 --  &new{2018-09-23 (日) 00:07:36};
- 変換表データフレームは,lower は1刻みなの? --  &new{2018-09-23 (日) 00:08:41};
- 変換用データフレーム,lower は 4 以上はないの?負の値も取らないの? --  &new{2018-09-23 (日) 00:09:50};
- > どのようなコードを書けばよいでしょうか&br;あなたは「上手くない方法では書けるけど」他に「上手い方法はないか」ということ? --  &new{2018-09-23 (日) 00:11:41};
- 業務で使うデータのため、変換用データフレームも数千件あります。lowerとupperは以上と未満で、実際は1以外のさまざまなレンジをとります。変換用データフレームにない値がある場合は欠損を返すようにしたいです。 --  &new{2018-09-25 (火) 00:45:21};
- すみません。上手くない方法すら思いつかない状況です。 --  &new{2018-09-25 (火) 00:46:19};
- 何の規則性もないような変換用データフレームなら,上手いプログラムは書けないんじゃないかな..実際に以下のプログラムを使って,処理時間が掛かっても,そのような変換業務を怨むしかない --  &new{2018-09-25 (火) 07:41:05};
 変換用 = data.frame(lower = 0:3, upper = 1:4, value = c(7, 5, 4, 3 ))
 変換前 = data.frame(v = c(1.5, 2.5, 999, 3.2))
 
 z = lapply(変換前$v, function(x) {
   y = which(変換用$lower <= x & x < 変換用$upper)
   ifelse(length(y) == 0, NA, 変換用$value[y])
 })
 変換後 = 変換前
 変換後$w = unlist(z)
 
 > 変換後
       v  w
 1   1.5  5
 2   2.5  4
 3 999.0 NA
 4   3.2  3

#comment

**merge()の結合様式に関するパラメータを外部から入力する [#q5f02abf]
>[[nkrit]] (2018-09-04 (火) 10:21:20)~
~
merge()の結合様式に関するパラメータを外部から入力することを考えているのですが、~
前回のご指摘を踏まえて、本質的な部分だけの質問を心がけて、コンソールからの外からの入力に対応するスクリプト部分は省略します。~
ポイントは、たとえば、whichに "L"が入力されたら、論理型で all.x=T, all.y=Fと返してくれて、"R"が入ったら、all.x=F, all.y=Tとなり、該当するローマ字を入れなければ、自動的にall.x=T, all.y=F (left merge) が選ばれるような仕組みを作りたいと思いました。~
そこで、
 which <-"L" # may change to others
 xyTF <- list(c(T,F),"left") # default here --> all.x=T, all.y=F
   switch(which, 
   "L" = xyTF <- list(c(T,F),"left"), 
   "R" = xyTF <- list(c(F,T),"right"), 
   "O" = xyTF <- list(c(T,T),"outer"), 
   "I" = xyTF <- list(c(F,F),"inner"),
   "l" = xyTF <- list(c(T,F),"left"), 
   "r" = xyTF <- list(c(F,T),"right"), 
   "o" = xyTF <- list(c(T,T),"outer"), 
   "i" = xyTF <- list(c(F,F),"inner"),
   cat("\n When other letters  => 'left merge' is automatically selected.\n\n")
 )
 cat("Mode: ", which,"=[" , xyTF[[2]], "]\n")
 all.x=xyTF[[1]][1]
 all.y=xyTF[[1]][2]
 
 # example: Mdata <- merge(Ldata, Rdata, by.x=Lkey, by.y=Rkey, all.x=xyTF[[1]][1], all.y=xyTF[[1]][2])
としてみました。なにぶん独学で、周囲に批判的なコメントをくださる人がいないもので、ふつうは、どうすべきなのかよくわからず、もっと筋の良い(うまい)プログラミングってあるのかと思い、質問させていただきます。なにとぞアドバイスのほど、よろしくお願いいたします。答えは出るのだから、これでも構わないとかでも、ありがたいです。~

//
- 文字化けしてしまいました。すいません。1? のところは[[1]]、2?のところは[[2]]が入ります -- [[nkrit]] &new{2018-09-04 (火) 10:24:23};
- 二重角括弧のつもりです。うまく入力できません。すいません。 -- [[nkrit]] &new{2018-09-04 (火) 10:26:31};
- このページの最初の方に「「[[投稿における注意事項]]」を読んでから」とあるし,その中には更に「&heart; [[投稿文書の書式:http://www.okadajp.org/RWiki/?%E6%95%B4%E5%BD%A2%E3%83%AB%E3%83%BC%E3%83%AB]] &heart; を読んでください」もあるよ。
- 少なくとも switch(which, を switch(toupper(which), にすれば,小文字が大文字に変換されるので,小文字のときの記述は削除できるね。小文字に統一したいなら tolower。 --  &new{2018-09-04 (火) 11:06:56};
- なんで,リストなんか使う?ややこしくなるだけ。 --  &new{2018-09-04 (火) 11:24:25};
- 要するに,which が "R", "L", "O", "I" に対して,(all.x, all.y) が (FALSE, TRUE), (TRUE, FALSE), (TRUE, TRUE), (FALSE, FALSE) になればよいのか? --  &new{2018-09-04 (火) 11:26:54};
- やりたいことを,できるだけ簡潔に正確に日本語で書けば,それをそのまま R に翻訳すればよい --  &new{2018-09-04 (火) 11:30:27};
 which <- toupper(which) # 小文字で指定されたら大文字にする
 all.x <- TRUE; all.y <- FALSE # デフォルトの場合の定義
 if (which == "R" || which == "I") all.x = FALSE # デフォルトでない場合の再定義
 if (which == "R" || which == "O") all.y = TRUE  # デフォルトでない場合の再定義
 cat("all.x =", all.x, "all.y =", all.y, "\n")
- 投稿における注意事項、理解不十分でたいへん失礼しました。早速にありがとうございました。よくわかりました。リストを使ったのは、選ばれたものが"left"なのか"right"なのかを、注釈として同時に出力しようと思ったのですが、その場合は、mmode <-c("L"="left","R"="right", "O"="outer", "I"="inner")、unname(mmode[which])のように2行、下に続けるのでよろしいでしょうか? -- [[nkrit]] &new{2018-09-04 (火) 12:02:54};
- 辞書引きの問題なので,解はいろいろあるだろう。たとえば,c("left","right", "outer", "inner")[c("L", "R", "O", "I") %in% which] --  &new{2018-09-04 (火) 13:14:40};
- しかしそもそも,「選ばれたものが"left"なのか"right"なのかを、注釈として同時に出力しよう」というなら,which を 1文字で指示するのをやめて,フルネームで指定すればよい。そうすれば,which を書けばそのまま注釈になる。面倒くさいこと(フルネームのかわりに頭文字で指定して,また,その頭文字をフルネームに戻して表示する)をしないで済む。1文字で表すことがどれほど効率的なのか? --  &new{2018-09-04 (火) 13:18:15};
- ありがとうございました。ミススペルしてイライラしないようにするには1文字で・・・、とか最初思ったのですが、確かに仰る通りなように思えてきました。いろいろ勉強させていただきました。独学にはなりますが、もっと知識と経験を積んでから、またお邪魔したいと思います。よろしくお願いいたします。 -- [[nkrit]] &new{2018-09-04 (火) 14:24:03};

#comment

**自分のp値のデータセット(例えば5千個)のそれぞれの値が、並べ替えで得られたp値データセット(例えば1万個)のうちの何番目に位置するか(小さい方から何%に入るか)を計算していきたい時 [#u6287637]
>[[nkrit]] (2018-08-29 (水) 00:51:11)~
~
ベタに下記のようなスクリプトを書いてみたのですが、とても時間がかかるので、Rのままで、大幅に時間を節約する方法はないかと思いました。~
双方のファイルをソートしてから始めると少しは節約になるのかと思いましたが、それでもわかりやすいスクリプトが書けません。アイデアをいただけましたら幸いです。~
~
args <- commandArgs(TRUE)~
working.dir <- dirname(args[1])~
q.file <- basename(args[1])~
p.file <- args[2]~
~
setwd(working.dir)~
Qdata <- read.table(q.file, header = T, sep = "\t")~
# Qdata[,5] = query pvalue dataset (ex.5,000)~
Pdata <- read.table(p.file, header = T, sep = "\t")~
# Pdata[,1] = compared pvalue dataset (ex.10,000)~
Qdata$count <- 0~
Sys.time()~
for (i in 1:nrow(Qdata)){~
    for (j in 1:nrow(Pdata)){
        if (Qdata[i,5] >= Pdata[j,1])
            Qdata$count[i] <- Qdata$count[i]+1
            # when pvalue in the query dataset is larger than pvalue in the compared dataset, one count is added
    } 
    # ex. nrow(Pdata) = 10,000
}   ~
Sys.time()~
Qdata$p_value <- Qdata$count/nrow(Pdata)~
pvalue_q.file <- paste0("pvalue_", q.file)~
write.table(Qdata, pvalue_q.file, quote = F, sep = "\t", row.names = F)~

//
- プログラムのヘタな人は,質問もヘタなのか... --  &new{2018-08-29 (水) 06:53:05};
- 要するに,x, y という2つのベクトルがあるとき,xの各要素について,その値以下のyの要素数は幾つあるか知りたい...ってことじゃないか? --  &new{2018-08-29 (水) 07:07:29};
- 質問者側のどうでもよい条件は不要というか,理解の障害にしかならない。 --  &new{2018-08-29 (水) 07:08:49};
- (Qdata[i,5] とか Pdata[j,1] なんかをそのまま for ループで使うのも論外。カウント変数を Qdata$count なんてリストにするのも疑問満載。 --  &new{2018-08-29 (水) 07:10:29};
- データの大きさは質問の本質と違うのだから,簡単な例とその解を示す方が手っ取り早い。 --  &new{2018-08-29 (水) 07:11:28};
- 例えば,x = (2, 6) で y = (3, 4, 1, 0, 9) のとき,(2, 4) を返せばよいのでしょ? --  &new{2018-08-29 (水) 07:13:07};
 x = c(2, 6)
 y = c(3, 4, 1, 0, 9)
 count = integer(length(x))
 for (i in seq_along(x)) {
    sum = 0
    for (j in seq_along(y)) {
       if (x[i] >= y[j]) {
          sum = sum + 1
       }
    }
    count[i] = sum
 }
 count

- 上のプログラムは,あなたの質問の本質であって,答えではないが。スタート地点ではある... --  &new{2018-08-29 (水) 07:14:04};
- データとして x = rnorm(5000); y = rnorm(10000) で上のプログアムを走らせても 4.665 秒ほどしかかからない。 --  &new{2018-08-29 (水) 07:32:14};
- 処理部分だけは,「1行で書ける!!!」。そして,その実行時間は 0.203 秒。20 倍速くなったけど,何の意味もない(5秒くらい待ちなさいということ) --  &new{2018-08-29 (水) 07:34:01};
- はい,おまた〜。例解1. count = sapply(x, function(x1) sum(y <= x1)) --  &new{2018-08-29 (水) 07:57:28};
- 例解2. count = rowSums(outer(x, y, ">=")) これは,例解1. より 3 倍遅い。 --  &new{2018-08-29 (水) 07:58:36};
- おっしゃるように本質を理解しておりませんでした。それにもかかわらず、辛抱強くご回答いただき、感謝の言葉をいくら述べても足りない気持ちです。「Qdata[i,5] とか Pdata[j,1] なんかをそのまま for ループで使うのも論外。」--- 実は、これで走らせると何十分もかかりまして、無理と思っておりました。単に普通の変数に変えるだけでも大幅に時間が短縮され、さらにsum()をうまく使って(sumはただ数値を合計する関数だと思っておりましたので、びっくりしました)、それにapply系の関数を組み合わせれば、すっとできるのですね。Rを始めて数ヶ月たちましたが、こういうのは、なかなかどうググったらよいかもわからず、改めて御礼申し上げます。 -- [[nkrit]] &new{2018-08-29 (水) 11:52:57};

#comment

**追加の質問 [#n55c389e]
>[[初心者です]] (2018-08-11 (土) 08:05:21)~
~
もう一点、こちらも初歩的な質問となり大変恐縮ですが、①に合致するものを②から選択したいです。選択された結果は③のようになります。~
①~
sample 	month~
1	201701~
1	201702~
1	201703~
1	201704~
1	201705~
1	201708~
1	201709~
2	201705~
2	201706~
2	201709~
2	201712~
~
②~
sample	sex	age	site	month~
1	Male	34	a	201701~
1	Male	34	b	201701~
1	Male 	34	a	201702~
1	Male	34	b	201702~
1	Male	35	a	201703~
1	Male	35	a	201704~
1	Male	35	a	201705~
1	Male	35	a	201706~
1	Male	35	b	201708~
1	Male	35	a	201709~
1	Male	35	b	201709~
1	Male	35	b	201711~
2	Female	63	c	201701~
2	Female	63	c	201705~
2	Female	63	d	201705~
2	Female	63	c	201706~
2	Female	64	c	201707~
2	Female	64	c	201709~
2	Female	64	d	201709~
2	Female	64	c	201710~
2	Female	64	d	201712~
~
③~
sample	sex	age	site	month~
1	Male	34	a	201701~
1	Male	34	b	201701~
1	Male 	34	a	201702~
1	Male	34	b	201702~
1	Male	35	a	201703~
1	Male	35	a	201704~
1	Male	35	a	201705~
1	Male	35	b	201708~
1	Male	35	a	201709~
1	Male	35	b	201709~
2	Female	63	c	201705~
2	Female	63	d	201705~
2	Female	63	c	201706~
2	Female	64	c	201709~
2	Female	64	d	201709~
2	Female	64	d	201712~
~
merge(データフレーム①,データフレーム②,by.x=”sample”,by.y=”month”)とやってみましたが,column name ‘sample’ is duplicated in the resultというエラーがでます。~
大変お手数をおかけしますが、ご教示いただけると幸いです。どうぞよろしくお願いいたします。~

//
- 単に,merge(データフレーム①,データフレーム②)&br; 列の順序が変わるけど,並べ直せばよいだけ --  &new{2018-08-11 (土) 09:20:49};
- ご回答者様、ありがとうございます。特に列を指定する必要はないのですね。無事マージできました。もっと勉強します。ありがとうございました。 -- [[初心者です]] &new{2018-08-12 (日) 07:10:30};

#comment

**重複を除外する方法 [#t241d727]
>[[初心者です]] (2018-08-10 (金) 17:20:37)~
~
R初心者です。初歩的な質問で申し訳ございません。~
例えば以下のようにサンプルごとに複数の月がデータとしてある場合、重複せずにMonthのデータをピックアップするにはどのように書けばよいでしょうか?~
sample	Month~
1	201701~
1	201701~
1	201702~
1	201703~
1	201703~
1	201704~
1	201704~
1	201705~
1	201708~
1	201708~
1	201709~
2	201705~
2	201706~
2	201706~
2	201709~
2	201709~
2	201712~
~
結果は以下のようになります。~
sample	Month~
1	201701~
1	201702~
1	201703~
1	201704~
1	201705~
1	201708~
1	201709~
2	201705~
2	201706~
2	201709~
2	201712~
~
大変お手数をおかけしますが、どうぞよろしくお願いします。~

//
- 何のことはない,unique(データフレーム名)&br;投稿様式に従いなさい。 --  &new{2018-08-10 (金) 18:30:10};
- ご回答者様、ありがとうございます。duplicateで重複を除外する方法ばかり考えていてuniqueでこのように簡単に重複を除外できるとは知りませんでした。大変助かりました。 -- [[初心者です]] &new{2018-08-11 (土) 07:58:39};
- 申し訳ありません。もう一点伺いたいことがあり、こちらのコメント欄に記載しようとしたのですが、うまく入力できないため、別スレッドを立てて質問させていただきます。重ね重ね申し訳ございません。 -- [[初心者です]] &new{2018-08-11 (土) 08:01:40};

#comment

**変数設定について [#t97d6d76]
>[[むー]] (2018-08-09 (木) 22:17:57)~
~
変数設定について質問です。英語での入力は問題ないのですが、日本語にするとエラーが出てしまいます。この場合、どの様に設定をすればよろしいでしょうか。因みにMacOSです。~
誰か分かる方がおられましたらよろしくお願いします。~

//
- どのように入力したら、どののようなエラーが出るのか --  &new{2018-08-09 (木) 22:36:56};
- > 身長 <- c(173,178,180,183,182,174,179,179,174,192)を入力するとError: unexpected input in "�"というエラーが出ます。よろしくお願いします。 -- [[むー]] &new{2018-08-10 (金) 07:58:31};
- R を立ち上げた直後に15,6行出るメッセージは日本語になってるか? --  &new{2018-08-10 (金) 11:46:26};
 R version 3.5.1 ...... -- "Feather Spray"
 Copyright ....
 Platform: x86_64-apple-darwin15.6.0 (64-bit)
 
 R は、自由なソフトウェアであり、「完全に無保証」です。 
 一定の条件に従えば、自由にこれを再配布することができます。 
 配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。
以下略
- エラーメッセージ自体も文字化けしている。Error: unexpected input in "�" の "�" は何なの? --  &new{2018-08-10 (金) 11:49:33};
- Rを立ち上げた直後は英語です。 -- [[むー]] &new{2018-08-10 (金) 12:47:43};
- R version 3.4.4 (2018-03-15) -- "Someone to Lean On" Copyright (C) 2018 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin15.6.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.  During startup - Warning messages: 1: Setting LC_CTYPE failed, using "C"  2: Setting LC_COLLATE failed, using "C"  3: Setting LC_TIME failed, using "C"  4: Setting LC_MESSAGES failed, using "C"  5: Setting LC_MONETARY failed, using "C"  -- [[むー]] &new{2018-08-10 (金) 12:47:56};
- すみません、この?の部分は僕も色々調べてみたのですが僕も分かりません。 -- [[むー]] &new{2018-08-10 (金) 12:49:00};
- あなたは,R を英語で使いたいの?&br;日本語で使いたいのなら,「システム環境設定」の「言語と地域」の「優先する言語」が「日本語」,「English」の順になっているかどうか確認して&br;全てのメニューが英語になっているかも知れないけど,分かるよね。System Preferences と Language & Region と Preferred languages だよ&br;変数名として日本語が使えないと嘆くより先に,Setting LC_CTYPE failed, using "C" とか,赤字で書かれているんじゃない?そっちの方を異常だと思わなきゃ。 --  &new{2018-08-10 (金) 13:35:35};
- Rは日本語での使用を望んでいます。先程、言語地域設定の優先言語を確認したところ英語が優先となっており、日本語に変更したところ問題なく日本語を変数として使える様になりました。アドバイスありがとうございます、お騒がせ致しました。 -- [[むー]] &new{2018-08-10 (金) 15:21:38};

#comment

**グラフのメタファイルでの貼り付け時に不要な余白をなくしたい [#yae6ce35]
>[[pkopw2]] (2018-08-08 (水) 16:30:48)~
~
作図したグラフをメタファイルとしてパワポに貼り付ける方法に関しての質問です。~
~
 右クリック>メタファイルにコピー>パワポにコピペ~
~
とすると、グラフが左上に偏ってしまい、右側・下側に無駄な余白が生じてします。その結果、グラフが小さく貼り付けられてしまいます。~
(R(3.5.1)、windows10 pro、powerpoint 2016)~
~
この現象は、例えるなら、~
~
par(mfrow=c(2,2))~
~
のコマンドを入力した時に、左上の領域にグラフが描出されるようなイメージです。~
~
前に使っていたパソコン(ver3.2.1、windows8)では、作図したグラフをそのままのサイズで張り付けることができました(そのままというのは、”ビットマップにコピー”として張り付けた時のイメージです)。~
~
結局、パワポにコピペした後にグループ化を解除したりして一応何とかなるのですが、描出されたグラフをそのままのイメージで、メタファイルとして貼り付けたいのです。~
~
~
作図領域とデバイス領域がそろっていないのかと思い、下記のコマンドを色々と試してみましたが、~
~
fig = c(0, 1, 0, 1)~
par(oma = c(0, 0, 0, 0))  ~
plt = c(0, 1, 0, 1)~
par(mfrow=c(1,1))~
~
昨日からずっと解決できていません。~
初歩的な質問で恐縮ですが、どうかよろしくお願いします。~

//
- 再現できなかったけど,「メタファイルにコピー・パワポにペースト」ではなく,「メタファイルに書き出してパワポに読みこむ」でやったらどう? --  &new{2018-08-09 (木) 07:42:06};
- ご回答ありがとうございます。試してみましたが、作図部分以外の余白も読み込まれてしまいました。 -- [[pkopw2]] &new{2018-08-09 (木) 15:06:04};
- どのように試したのかはっきりしない。以下のようにしてできるファイルをダブルクリックしたときに表示される画像を確認して
 win.metafile("test.wmf")
 hist(rnorm(10000))
 dev.off()
ここに示す画像のようになっておらず,大きな余白があるのか(赤枠は画像の範囲を示すためにこちらで追加した) --  &new{2018-08-09 (木) 16:05:15};~
&ref(test-wmf.png);
- ご回答ありがとうございます。コマンドを打ち込んでRで作図されるイメージは上記のとおりです。しかし、これを開くと左隅に縮小されたグラフがあり、右・下側に余白が生じてしまうのです。 -- [[pkopw2]] &new{2018-08-10 (金) 15:12:16};
- じゃあ,わからない。そのファイルをアップロードしてみて。 --  &new{2018-08-10 (金) 15:46:51};
- この掲示板にアップロードする。その際,枠を付けたりなど余計な編集はしない。表示もしなくてよい。 --  &new{2018-08-11 (土) 09:22:21};
- wmfファイルとemfファイルのどちらも同じように余白が生じています。 -- [[pkopw2]] &new{2018-08-11 (土) 12:28:29};
- par(no.readonly=TRUE) を入力して,以下のパラメータの値が同じかどうかを調べる
 $fig
 [1] 0 1 0 1
 
 $mai
 [1] 1.02 0.82 0.82 0.42
 
 $mar
 [1] 5.1 4.1 4.1 2.1
 
 $mfg
 [1] 1 1 1 1
 
 $oma
 [1] 0 0 0 0
 
 $omd
 [1] 0 1 0 1
 
 $omi
 [1] 0 0 0 0
 
 $plt
 [1] 0.1205513 0.9382542 0.1499541 0.8794487
 
 $usr
 [1] 0 1 0 1
それ以上は,わからない。 --  &new{2018-08-11 (土) 14:17:58};
- いろいろなパラメータが出てきました。上記の中では、$pltと$usrの値が全然違いました。 &br;$plt &br;[1] 0.1171429 0.9400000 0.1459314 0.8826826 &br;$usr &br;[1] -1.5200000 44.9200000 -0.2776667 27.7666667 -- [[pkopw2]] &new{2018-08-11 (土) 16:07:38};
- しかしながら,どれも関係ないようで,ギヴアップ&br;pdf とかを使ってもおなじなのかな? --  &new{2018-08-11 (土) 22:26:22};
- またやってみたいと思います。色々とお付き合いいただき感謝申し上げます。 -- [[pkopw2]] &new{2018-08-13 (月) 08:46:43};

#comment

**複数のデータフレームを加工したい [#z075f4f0]
>[[sk]] (2018-08-04 (土) 08:03:33)~
~
複数のデータフレームを同じ操作で加工したいのですが、うまくできません。~
ベクターでも一緒なので、やりたいことは下記のような形です。~
~
a <- c(1,2)~
b <- c(3,4)~
~
a <- append(a, 9)~
b <- append(b, 9)~
~
これを~
~
for (i in list(a,b) ){~
 i <- append(i, 9)
 View(i)
}~
~
のように書くと、Viewでは見えるのですが、~
それぞれのデータフレーム(ベクター)は変化していません。~
~
lapply(dlist, function (x) {x <- append(x, 9); View(x)})~
~
も考えたのですがこれも違いました。~
~
for (s in c("a","b") ){~
 eval(parse(text = paste0(s," <- append(", s, ", 9)")))
 eval(parse(text = paste0("View(", s, ")")))
}~
~
これはできるのですが、操作が多いので、すべてを文字列で書くのが面倒ですし視認性も悪いです。本当はどうするのがよいのでしょうか。~

//
- オブジェクトへの操作を関数 func で定義し,オブジェクト <- func(オブジェクト} で更新する...普通そうでしょ。 --  &new{2018-08-04 (土) 22:38:21};
 func = function(d) {
 	d$x2 = d$x^2
 	d$y2 = 1/d$y
 	d
 }
 
 > set.seed(987)
 > a = data.frame(x=1:5, y=rnorm(5))
 > a
   x           y
 1 1 -0.05701369
 2 2  0.26999481
 3 3  0.87447166
 4 4 -0.19034659
 5 5  1.10069779
 
 > a = func(a)
 > a
   x           y x2          y2
 1 1 -0.05701369  1 -17.5396479
 2 2  0.26999481  4   3.7037749
 3 3  0.87447166  9   1.1435476
 4 4 -0.19034659 16  -5.2535746
 5 5  1.10069779 25   0.9085146
 
 > b = data.frame(x=1:10, y=rnorm(10))
 > b
     x            y
 1   1 -0.893758950
 2   2 -0.954967917
 3   3 -0.855857687
 4   4 -1.113020051
 5   5 -1.288726486
 6   6  0.757694061
 7   7 -0.876224265
 8   8  1.758459078
 9   9 -0.009684665
 10 10 -0.448383447
 
 > b = func(b)
 > b
     x            y  x2           y2
 1   1 -0.893758950   1   -1.1188699
 2   2 -0.954967917   4   -1.0471556
 3   3 -0.855857687   9   -1.1684186
 4   4 -1.113020051  16   -0.8984564
 5   5 -1.288726486  25   -0.7759598
 6   6  0.757694061  36    1.3197939
 7   7 -0.876224265  49   -1.1412603
 8   8  1.758459078  64    0.5686797
 9   9 -0.009684665  81 -103.2560250
 10 10 -0.448383447 100   -2.2302340
 
 > c = data.frame(x=c(2,4,8), y= c(0.2, 0.34, 0.87))
 > c
   x    y
 1 2 0.20
 2 4 0.34
 3 8 0.87
 
 > result = lapply(list(a, b, c), func) # lapply でまとめて実行
 > result
 [[1]]
   x           y x2          y2
 1 1 -0.05701369  1 -17.5396479
 2 2  0.26999481  4   3.7037749
 3 3  0.87447166  9   1.1435476
 4 4 -0.19034659 16  -5.2535746
 5 5  1.10069779 25   0.9085146
 
 [[2]]
     x            y  x2           y2
 1   1 -0.893758950   1   -1.1188699
 2   2 -0.954967917   4   -1.0471556
 3   3 -0.855857687   9   -1.1684186
 4   4 -1.113020051  16   -0.8984564
 5   5 -1.288726486  25   -0.7759598
 6   6  0.757694061  36    1.3197939
 7   7 -0.876224265  49   -1.1412603
 8   8  1.758459078  64    0.5686797
 9   9 -0.009684665  81 -103.2560250
 10 10 -0.448383447 100   -2.2302340
 
 [[3]]
   x    y x2       y2
 1 2 0.20  4 5.000000
 2 4 0.34 16 2.941176
 3 8 0.87 64 1.149425
 
 > result_c = result[[3]]
 > result_c
   x    y x2       y2
 1 2 0.20  4 5.000000
 2 4 0.34 16 2.941176
 3 8 0.87 64 1.149425
- ありがとうございます。ということは、オブジェクトが100個あれば、100個書く以外には方法はないのですよね。 lapply でまとめて実行しても、各object a, b, cは更新されないので。 a = func(a) b = func(b) というのを一気に実行できる方法がないかと思いました。 -- [[sk]] &new{2018-08-05 (日) 05:08:16};
- そもそも100個のオブジェクトを別々の変数に割り当てようとするのが間違い。例で挙げたに過ぎないだろうが,
 a <- c(1,2)
 b <- c(3,4)
は代入だけど,こんなのを 100回書くわけはないが,ファイルからの入力にしても,たとえば
 a <- read.table("file-a.dat")
なんてことになり,結局100回書かなくてはならないことに違いない。変更も 100回書かなきゃならないし,利用も同じ。変更が複雑なら,その複雑さを100回そのまま書くよりは,複雑な処理の記述を1回だけ関数で書いて,せめて100回書くときは文字数の少ないfunc(a)としようというのが先の回答。~
たとえば,上のようにデータフレームごとに処理するだけのことなら,入力データファイル名をちゃんと規則的に x001.dat, ..., x100.dat のようにしておけば(データファイルが測定器からの自動生成のような場合は,このようになっていることが多いだろうけど。そうでなければ,データファイル名を手動で100回付けなければならないかもね)
 for (i in 1:100) {
   f = sprintf("x%03i.dat", i)
   x = read.table(f)
   x = fnc(x)
   write.table(x, f) # 変更を書き出す必要があれば
 }
とすればよいだけ。~
ここでも,もしファイル名に規則性がなければループ自体は前と同じように簡単に書けるけど,ループの前に file.name = c("a", "b", ....) なんて100個のファイル名を書かなきゃならなくなる。
 file.name = c("foo.dat", "bar.dat", "nanntakakantaranagainamae.dat", "jugemujugemu.dat", ....) 全部で100個の定義
 for (f in file.name) {
   x = read.table(f)
   x = fnc(x) # ここに処理内容を書けば,処理内容は1回だけ書けばよいので,関数にしたものを呼ぶ必要はないけど,読みやすいように書く。
   write.table(x, f) # 変更を書き出す必要があれば
 }
要するに,「繰り返しはループでする」,「ループで処理できるようにデータ構造およびデータ記述法を考える」ということ。 --  &new{2018-08-05 (日) 06:05:43};
- プログラミングを必修にするとか何とかいってるけど,子どもたちより大きいガキにプログラムの基本を教えるにはどうすりゃいいのかな? --  &new{2018-08-06 (月) 21:07:54};
- 処理できるような構造にもっていく、というのはよい考えですね。Rは結構いろいろなことができるので、できるのかできないのかがわからなかったので、できないと教えてくださったのは非常にありがたいです。 -- [[sk]] &new{2018-08-07 (火) 07:06:13};

#comment

**selectizeInputを用いてdata.frameの絞り込みを行いたい [#e1265ef7]
>[[sh]] (2018-07-26 (木) 17:33:16)~
~
用語があっているか自信がないのですが・・・~
Database(postgreSQL)接続してテーブルを参照し、そのカラムの1つを(重複削除して)リスト形式にすることで、selectizeInputの選択肢にしています。~
~
■読み込んだテーブル~
|ID|要素|~
|1|赤|~
|1|黄|~
|1|青|~
|2|赤|~
|2|青|~
|3|青|~
|3|緑|~
|4|赤|~
|4|緑|~
~
■selectizeInputの選択肢:テーブルの<要素>カラムをunique化したもの~
[赤,黄,青,緑]~
~
この選択肢に対して、「選択内容をすべて含むID」を表示したい場合はどうすれば良いのでしょうか。~
或いは絞り込むために、表をもっと加工したほうが良いのでしょうか。。~
~
※例~
選択:[赤,青] ⇒ 表示ID:1,2~
選択:[緑] ⇒ 表示ID:3,4~

//
- 方針のみ --  &new{2018-07-26 (木) 19:13:08};
 > data = data.frame(ID=c(1,1,1,2,2,3,3,4,4),
 +   要素=c("赤","黄","青","赤","青","青","緑","赤","緑"))
 > f = function(選択) {
 +   tbl = xtabs(~ID+要素, data)[, 選択, drop = FALSE]
 +   as.integer(rownames(tbl)[rowSums(tbl)==length(選択)])
 + }
 > f(c("赤", "青"))
 [1] 1 2
 > f("緑")
 [1] 3 4
- ありがとうございます・・・!分割表という概念があるのですね。xtabの用法調べながら試してみます。 -- [[sh]] &new{2018-07-27 (金) 11:47:47};

#comment

**glmmML()のp値の取得 [#ke3d6012]
>[[nkrit]] (2018-07-20 (金) 22:01:39)~
~
一般化混合線形モデルのパッケージglmmMLで、~
result <- glmmML(status ~ x[[3]], data = x, family = binomial, cluster = Columns)~
のような形で結果を取得して、係数の推定値と係数の標準偏差は、~
result$coefficients[2]~
result$coef.sd[2]~
のように取得できましたが、~
z値やそのp値は、どのように取得すれば良いのでしょうか。~
result自体は、~
               coef se(coef)       z Pr(>|z|)
(Intercept) -0.1233    0.845 -0.1459    0.884~
x[[3]]  14.4545   79.892  0.1809    0.856~
のような形で表示されてくるので、取得の方法があるのではと思いました。~
推定値/標準偏差を後で計算して、2*pnorm()によってP値を取得することもできるかと思いましたが、せっかくもともと表示されているのでそのまま取得したいと思いました。やり方をお教え頂けましたら、大変ありがたく思います。~
どうぞ宜しくお願い致します。~
~
念のためresultのstructureを添付させていただきます。~
> str(result)~
List of 18~
 $ boot                 : num 0
 $ converged            : logi TRUE
 $ coefficients         : Named num [1:2] -0.123 14.455
  ..- attr(*, "names")= chr [1:2] "(Intercept)" "x[[3]]"
 $ coef.sd              : num [1:2] 0.845 79.892
 $ sigma                : num 0.0194
 $ sigma.sd             : num 31.6
 $ variance             : num [1:3, 1:3] 7.14e-01 6.54e-02 5.89e-03 6.54e-02 6.38e+03 ...
 $ aic                  : num 28.1
 $ bootP                : logi NA
 $ deviance             : num 22.1
 $ df.residual          : num 13
 $ cluster.null.deviance: num 22.1
 $ cluster.null.df      : int 14
 $ posterior.modes      : num [1:16] -0.00018 -0.000178 -0.000178 -0.000203 -0.000182 ...
 $ prior                : chr "gaussian"
 $ terms                :Classes 'terms', 'formula'  language status ~ x[[3]]
  .. ..- attr(*, "variables")= language list(status, x[[3]])
  .. ..- attr(*, "factors")= int [1:2, 1] 0 1
  .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. ..$ : chr [1:2] "status" "x[[3]]"
  .. .. .. ..$ : chr "x[[3]]"
  .. ..- attr(*, "term.labels")= chr "x[[3]]"
  .. ..- attr(*, "order")= int 1
  .. ..- attr(*, "intercept")= int 1
  .. ..- attr(*, "response")= int 1
  .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
  .. ..- attr(*, "predvars")= language list(status, x[[3]])
  .. ..- attr(*, "dataClasses")= Named chr [1:3] "numeric" "numeric" "factor"
  .. .. ..- attr(*, "names")= chr [1:3] "status" "x[[3]]" "(cluster)"
 $ info                 : int 0
 $ call                 : language glmmML(formula = status ~ x[[3]], family = binomial, data = x, cluster = Columns)
 - attr(*, "class")= chr "glmmML"

//
- summary.glmmML を読めば,「推定値/標準偏差を後で計算して、2*pnorm()によってP値を取得する」しか方法がないことが分かる。 --  &new{2018-07-21 (土) 06:08:41};
- ありがとうございます。ふつうのglmでは係数の表記がmatrix形式で、result$coefficients["X1","Pr(>|z|)"]で自然に取得できたので、glmmMLも何か知らないテクニックがあるのかと思いましたが、読めばそれがないことが当然わかるのですね、そこがわかりませんでした。。 -- [[nkrit]] &new{2018-07-21 (土) 08:55:20};
- ありがとうございます。ふつうのglmでは係数の表記がmatrix形式で、result$coefficients["X1","Pr(>|z|)"]で自然に取得できたので、glmmMLも何か知らないテクニックがあるのかと思いましたが、読めばそれがないことが当然わかるのですね、そこがわかりませんでした。。 -- [[nkrit]] &new{2018-07-21 (土) 09:25:30};

#comment

**data.frameの差集合を出したい [#kc0f52a7]
>[[sh]] (2018-07-18 (水) 14:57:23)~
~
テーブルのなかで「指定の文字を含むレコードを除く」のやり方が分からず、~
 (1)dbGetQueryで得られたテーブル1~
 (2)テーブル1をfilter,greplで絞り込んだテーブル2(部分一致用)~
に対し、テーブル1とテーブル2の差集合をとる、~
という手法で実現しようとしていますがやり方がわかりません…~
~
setdiffでは目的の挙動をしてくれないのですが、~
関数のチョイスが間違っているのでしょうか。~
また、「指定の文字を含むレコードを除く」を一発で実現する方法があるのでしょうか。~
~
ご教授いただければ幸いです。~

//
- Show examples. --  &new{2018-07-18 (水) 15:26:41};
 > a = data.frame(x = c("abc", "fab", "xyz", "cabs", "xw"), y = c(2, 1, 4, 3, 5))
 > a[!grepl("ab", a$x),]
     x y
 3 xyz 4
 5  xw 5
- greplの前に否定記号置けたんですね!ありがとうございます、解決しました! -- [[sh]] &new{2018-07-18 (水) 15:56:57};

#comment

**poisson.test()について [#pe4e3b60]
>[[ワイン]] (2018-07-18 (水) 06:19:51)~
~
お世話になります。poisson.test()で検定をするためヘルプファイルを確認したところ、以下のような引数になっていました。~
~
 poisson.test(x, T = 1, r = 1,alternative = c("two.sided", "less", "greater"), conf.level = 0.95)
 ~
 x  number of events. A vector of length one or two.
 T  time base for event count. A vector of length one or two. 
 r  hypothesized rate or rate ratio
~
イベント発生数x=5の場合の検定結果は以下のとおりです。~
~
 > poisson.test(x=5)
 
         Exact Poisson test
 
 data:  5 time base: 1
 number of events = 5, time base = 1, p-value = 0.00366
 alternative hypothesis: true event rate is not equal to 1
 95 percent confidence interval:
   1.623486 11.668332
 sample estimates:
 event rate 
          5 
~
質問1:引数rやTの意味が分からないのですが、たとえばx=5,r=2とした場合、真のイベント発生数は10であるという帰無仮説で検定をするのでしょうか~
~
質問2:ポアソン分布で検定をするならば、平均値λを定義しないと分布の形状が決定できないと思うのですが、引数で指定しなのはなぜでしょうか。~
~
お手数ですが、ご回答宜しくお願い致します。~

//
- poisson分布に興味があるので、いろいろ見てみたのですが(回答ではありません、念のため)、たとえば、1ヶ月(T=1)に5回(x=5)交通事故があったが、この分布がポアソン分布にしたがっているなら、r(=x/T)がどのくらいになりえるのか、rを1とした場合、それはまれなことなのかどうなのかを検定しているのかな、と思いました。ちがっていたらすいません。もともと、どのλのポアソン分布にしたがっているのかわからないのが前提で話を進めているので、λ=xxのような形では明示できないのではと思いました。詳しい方の回答までのつなぎということでおねがいします。。 -- [[nkrit]] &new{2018-07-22 (日) 09:28:19};

#comment

**オブジェクトのアスキーテキスト表現 [#pe432a64]
>[[nkrit]] (2018-07-08 (日) 16:07:20)~
~
 > class(data)
 [1] "numeric"
 > cat(data)
 2 2 4 6 4 5 2 3 1 2 0 4
このような数値型のベクトルを、あとで他人が同じデータで試せるように、たとえば、~
 data <- c(2,2,4,6,4,5,2,3,1,2,0,4)
のような形でスクリプトの一部として保存しておきたいのですが、それぞれの数値の要素の後ろにカンマをつける良い方法が思いつきません。~
 for (i in 1:50){
  cat(paste0(data[i],sep=","))
 }
のようなことをして出力されたものをペーストしてみましたが、きっともっとよい方法があるのではないかと思いまして投稿しました。簡単な方法があれば教えてください。save(), load()で変数自体を保存するのではなく、ベタに保存しておきたいという希望です。初級者コースと聞いて質問致します。~

//
- データが、d <- c(rep(1:100)) として、write.csv( t(d), "x.txt", quote=F, row.names=F) として保存されたcsvの2行目をコピペしてはどうでしょう。 -- [[のな]] &new{2018-07-08 (日) 16:29:11};
- Use dput(data) or dput(data, file="foo.dat").&br;Or, cat(paste(data, collapse=",")), and CUT&PASTE.--  &new{2018-07-08 (日) 16:37:23};
- 早速のご回答ありがとうございます!! 最初、writeしちゃおうかと思いましたが、他にあるはずだと思いました。特にdputですが、全然、日本語の検索でひっかからず、知りませんでした。勉強になりました! -- [[nkrit]] &new{2018-07-08 (日) 16:52:18};
- タイトルなかったり、2回あげてしまったり、まだうまく投稿の仕方もわかっていない初心者からの質問でした。スイマセン。 -- [[nkrit]] &new{2018-07-08 (日) 17:03:45};

#comment

**フォントサイズを指定して複数のグラフをプロットすると大きさが変わって困っています [#m1573968]
>[[nona]] (2018-07-08 (日) 14:44:41)~
~
 Rでプロット領域を分割して、かつフォントサイズをpsで指定してプロットさせると、~
分割領域が2つまでは指定した通りのフォントサイズになるようなのですが、それ以上になるとフォントが小さくなって困っています。~
 領域が狭いのが原因と思い、マウスでウインドウを広げた後に再度プロットしたり、par(mar=)で余白を広げてもダメでした。~
どなたか、複数のグラフを1枚にプロットするときに、フォントサイズが指定通りの大きさになる方法をお教えください。~
 以下、試した設定です。~
~
+フォントサイズの指定がうまくいく~
jpeg("myplot.jpg", height=1000, width=1000)  ~
par(mfrow=c(1,2), ps=16) ~
plot(iris[,1],iris[,2])~
plot(iris[,3],iris[,2])~
 dev.off()                
~
+フォントサイズを指定しても、上と比べて字が小さくなる~
jpeg("myplot2.jpg", height=1000, width=1000)  ~
par(mfrow=c(1,3), ps=16) ~
plot(iris[,1],iris[,2])~
plot(iris[,1],iris[,2])~
plot(iris[,1],iris[,2])~
 dev.off()      
~
+軸周辺の余白を広げても変化なし~
jpeg("myplot3.jpg", height=1000, width=1000)  ~
par(ps = 16, mfrow=c(1,3), mar = c(6, 6, 4, 2))~
plot(iris[,1],iris[,2])~
plot(iris[,1],iris[,2])~
plot(iris[,1],iris[,2])~
 dev.off()      
~
+プロット自体を小さくしても変化なし~
jpeg("myplot4.jpg", height=1000, width=1000)  ~
par(ps = 14, mfrow=c(1,3), pin = c(1,2))~
plot(iris[,1],iris[,2])~
plot(iris[,1],iris[,2])~
plot(iris[,1],iris[,2])~
 dev.off()

//
- Use cex, not ps. --  &new{2018-07-08 (日) 15:39:10};
- 回答ありがとうございます。cexで指定するのは存じておりますが、やってみるとやはり、文字の大きさは異なってしまいます -- [[nona]] &new{2018-07-08 (日) 16:03:04};
- 再度cexで検証すると、1,2まではうまくいきました。しかし、3,4などほかのパラメータをいじるとスペースに余裕がある設定にしても文字が小さくなってしまいました。 -- [[nona]] &new{2018-07-08 (日) 16:18:05};
- > 3,4などほかのパラメータをいじると&br;Do not change. --  &new{2018-07-08 (日) 16:46:14};
- 仰る通りcexで指定して対処します。ありがとうございました -- [[nona]] &new{2018-07-08 (日) 20:30:59};

#comment

**分散分析 [#s63ec155]
>[[kx]] (2018-07-08 (日) 12:52:20)~
~
> valores <- c(1,-1,0,-2,-3,-4,-2,0,1,1,4,0,1,-2,-3,0,4,2,-1,0,-2,0,3,2,2,4,0,-2,0,2,1,-1,2,3,2,1)~
> supplier <- factor(rep(1:3, each=12))~
> batches <- factor(rep(rep(1:4, each=3), 3))~
~
のように入力し、~
~
> purity <- data.frame(valores,supplier,batches)~
としてデータフレームを行い、~
このpurityをsummaryでしたいのですが、この時にerrorの要素も入れるためには、~
~
> purity <- data.frame(valores,supplier,batches)だけではダメで、どのような操作が必要か分からずに困っています。~
~
どなたかお教えくださいませんでしょうか。~

//
- 'error' ?? --  &new{2018-07-08 (日) 15:40:03};
- Rでaovを使って分析した結果をsummaryで表示させたときに、Residual standard errorが含まれないということですね? 含まれないなら別途コピペするしかないです。 -- [[のな]] &new{2018-07-09 (月) 06:45:20};
- のな様 -- [[kx]] &new{2018-07-09 (月) 12:12:20};
- のな様 ご連絡ありがとうございます。再度aovで分析する際error(supplier/batches)を追加することでerrorを含ませることができました。ご連絡いただきまして、ありがとうございます。 -- [[kx]] &new{2018-07-09 (月) 12:14:08};
- 後学の為にもう少し、うまくいった手順を教えてください。。。私の指摘とは違う解決法をしたようですね。 -- [[のな]] &new{2018-07-09 (月) 22:24:54};

#comment

**ベクトルから連続する値を削除する [#n8516fab]
> (2018-06-25 (月) 23:56:24)~
~
c(1,2,2,3,4,2,2,1,1,1)~
のようなベクトルがあった時に~
下記のように連続する値をもつ要素を削除する方法はありますでしょうか?~
c(1,2,3,4,2,1)~
~
実際のベクトルは非常に長いのでループ処理は避けたいです。~

//
- --  &new{2018-06-26 (火) 06:10:39};
 > x = c(1,2,2,3,4,2,2,1,1,1)
 > rle(x)$values
 [1] 1 2 3 4 2 1
- x[c(TRUE,x[-length(x)]!=x[-1])] -- [[名無し]] &new{2018-06-27 (水) 12:35:57};
- ありがとうございます! --  &new{2018-06-27 (水) 18:56:03};

#comment

**要因ごとの計測 [#w12e89fc]
>[[ぐれいぴ]] (2018-06-22 (金) 09:29:57)~
~
いろいろ調べたのですが、分からなかったのでお教え願います。~
~
以下のようなデータがあった時に、要因(A、B、・・・)ごとの数を数えて集計したいと思いました。~
> a~
   factor rate
1       A    a~
2       A    a~
3       A    a~
4       A    a~
5       A    a~
6       A    b~
7       A    b~
8       A    b~
9       A    c~
10      A    c~
11      B    a~
12      B    a~
13      B    b~
14      B    b~
15      B    b~
16      B    b~
17      B    b~
18      B    c~
19      B    c~
20      B    d~
21      C    a~
22      C    b~
23      C    b~
24      C    b~
25      C    c~
26      C    c~
27      C    c~
28      C    c~
29      C    d~
30      C    d~
~
手入力でAについてaは5個、bは3個、・・・と求めることはできるのですが、このデータを読み込ませたときに自動的(A、B、Cとは全く指定しないで)に、~
~
  a b c d
A 5 3 2 0~
B 2 5 2 1~
C 1 3 4 2~
~
のように出力させることは可能でしょうか? よろしくお願いします。~

//
- data.frameの各列がfactor化されているのなら、tableだけで可能です。 --  &new{2018-06-22 (金) 13:08:08};
 > a <- data.frame(
 +   factor = rep(LETTERS[1:3], each = 10),
 +   rate = unlist(lapply(list(c(5, 3, 2, 0), c(2, 5, 2, 1), c(1, 3, 4, 2)), function (z) { rep(letters[1:4], z) })))
 > table(a)
       rate
 factor a b c d
      A 5 3 2 0
      B 2 5 2 1
      C 1 3 4 2
- 早速のご回答ありがとうございます。参考にしてみます。 -- [[ぐれいぴ]] &new{2018-06-22 (金) 13:23:35};

#comment

**restricted cubic splineの変曲点の個数に関して [#l8806eff]
>[[jj]] (2018-06-08 (金) 01:40:16)~
~
いつも勉強させていただいております。~
一年死亡と血圧の関係をrestricted cubic splineを用いて~
coxph(Surv(死亡までの時間,死亡イベントありなし) ~  rcs(PP,変曲点), data=dat)として表しました。~
rcs関数だと変曲点の個数は最小3個までなのですが、変曲点1つ、2つの場合はどのように処理すればよいでしょうか?他の関数がありますでしょうか?~
宜しくお願い致します。~

//

#comment

**mclust結果の再現性 [#s818a30e]
>[[さくらんぼ]] (2018-06-06 (水) 17:02:13)~
~
宜しくお願い致します。~
~
Mclustで繰り返し計算した際の再現性を得たいと考えています。~
~
RdocumentationのMclustの項目に、~
~
initialization~
A list containing zero or more of the following components:~
~
subset:~
A logical or numeric vector specifying a subset of the data to be used in the initial hierarchical clustering phase. By default no subset is used unless the number of observations exceeds the value specified by mclust.options("subset"). Note that to guarantee exact reproducibility of results a seed must be specified (see set.seed).~
~
とあることは分かったのですが、「再現性を得るためにはシードを設定する」とは具体的にどのようなことでしょうか?~

//
- とりあえず、R set.seed で検索したらたくさん解説が出てきますよ。また、このRjpwiki内をset.seedで検索してもたくさん使用例が出てきますよ。 --  &new{2018-06-07 (木) 11:48:21};

#comment

**Steel-Dwass検定がうまくいきません [#fa17b7c5]
>[[ジョージ]] (2018-06-05 (火) 17:20:05)~
~
最近Rを使用し始めたばかりの初心者です。~
よろしくお願いいたします。~
~
多重比較検定を行う必要があり、NSM3 というパッケージの pSDCFglig というコマンドを用いて Steel-Dwass 検定を行おうと考えています。そこで簡単な例を作ってテストしてみました。~
~
#ref(lastsave.txt)~
~
すると、計算が異常に重く、Rが応答しないようになりました。~
この原因がわからず困っています。解決法のご教授をお願いいたします。~
 - - - - - - - - ~
 まずは,上の方にも書いてあるように,「[[投稿における注意事項]]」を読んで,それに従ってください。~
 COLOR(red){これに従わない場合には,回答が得られにくい場合があります。} ~

//
- 計算機が非力な場合は、もっと能力の高いマシンにした方がよいかもしれませんね。 --  &new{2018-06-05 (火) 23:45:55};
 > system.time(pSDCFlig(dat,grp,method="Exact"))
    ユーザ   システム       経過  
     31.463      0.056     31.523
- 分かりました。どうもありがとうございます。 -- [[ジョージ]] &new{2018-06-07 (木) 14:17:08};

#comment

**R3.5.0へのbiOpsインストール [#dda1f8fa]
>[[シロツメクサ]] (2018-05-30 (水) 15:30:05)~
~
よろしくお願いいたします。~
~
Rの最新バージョンであるR3.5.0にbiOpsをインストールしたいです。~
色々調べましたが、どの情報が新しいのかもよくわかりません。~
~
どのページから行えばいいのかなど詳しい方法を教えていただけたらありがたいです。~
~
よろしくお願いいたします。~

//
- 追記  -- [[シロツメクサ]] &new{2018-05-30 (水) 16:57:48};
- Windows10です -- [[シロツメクサ]] &new{2018-05-30 (水) 16:58:26};
- https://cran.ism.ac.jp/package=biOps に書いてあるとおりです. 古いアーカイブからソースを取ってきてそれを自前でビルドするか(もっともそれが出来る人は質問しませんから...), 簡単に実行するなら検証用(再現性)の為に置いてある古いR (https://cran.ism.ac.jp/bin/windows/base/old/ の中の例えばR-2.15)を取ってきて, 古いR用のbiOpsを https://cran-archive.r-project.org/bin/windows/contrib/2.15/ から取ってきてインストールするかです. R-3.5で動かすのはかなり手間が必要だと思います. -- [[名無し]] &new{2018-06-01 (金) 14:34:11};
- ありがとうございます。やはりビルドをするか、古いものを使うかになるのですね。 -- [[シロツメクサ]] &new{2018-06-04 (月) 09:18:34};

#comment

**文字列の取り出し [#i147931f]
>[[ムーミン]] (2018-05-26 (土) 17:15:31)~
~
よろしくお願いします。~
~
文字列 "1月",~"12月"から月を除いた文字列を作りたく下記のプログラム書きました。~
結果は 1月",~"9月","10","11","12"となりました。~
どこが間違っているのかわかりません。~
どなたか教えてください。~
~
~
hkan1 <- C("1月",~"12月")~
k <- 0~
for (r in hkan1) {~
  
 k <- k + 1
  
  if ( k < 9 ) t1 <- substring(hkan1, 1, 1)
~
  else  t1 <- substring(hkan1, 1, 2)
  
}~

//
- if(k=<9){hogehoge}else{hoge}でないかな。k<9だと9未満になってしまう --  &new{2018-05-28 (月) 12:12:15};
- gsub("月", "",hkan1)でいいのでは? --  &new{2018-05-28 (月) 15:12:02};
- if for 文使わなくても1つ行で記述できるのですね。有難うございました。 -- [[ムーミン]] &new{2018-06-01 (金) 15:20:33};

#comment

**礼儀知らずの,無礼者 [#q02814be]
>[[河童の屁は,河童にあらず,屁である。]] (2018-05-25 (金) 21:41:41)~
~
もうね~
今後~
こんな~
礼儀知らずの~
質問者には~
回答しないことに~
します~

//

#comment

**あるカラムの項目を複数選択することでデータセットを絞り込みたい [#q37e60bd]
>[[シント]] (2018-05-22 (火) 13:16:55)~
~
複数カラムを持つデータセットを、そのうち1つのカラムデータを用いて絞り込みをしたいです。
 column01 column02 column03 column04
 x1 y1 z1 a1
 x2 y2 z2 a2
 x3 y3 z3 a3
 x3 y3 z2 a4
 x1 y4 z4 a1
 ...
というデータセットに対して column01 に着目し、
 [x1]
 x2
 [x3]
 [x4]
の選択ボックス的なものを設けて、対象としたいものをクリックして複数条件(or条件)で絞り込むというイメージです。~
DT パッケージの Row 選択に近いのですが、あれは data frame や matrix でしか出力できないと読みました。~
チェックボックスやラジオボタンで実現するしか無いのでしょうか。。~
ご教授頂ければ幸いです。どうぞよろしくお願いします。~

//
- やりたいことが今ひとつはっきりしないのですが,データフレーム名を d として,column01 が x1 or x3 のデータを抽出するなら
 d[column01 == "x1" | column01 == "x3",] # ] の前のカンマを忘れないように!
または
 subset(d, column01 == "x1" | column01 == "x3")
とするので十分でしょう。&br;「data frame や matrix でしか出力できない」とありますが,じゃあ,どういう形で出力したいのか?出力方法はいろいろありますよ。&br;「チェックボックスやラジオボタンで実現するしか無いのでしょうか」って,素の R だと,そんな方法でやる方が難しいでしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2018-05-22 (火) 15:57:07};

#comment

&br;
----
&aname(saisin);
**rbayesianOptimizationパッケージの使い方(エラーへの対処法)を知りたいです。 [#t2205a61]
>[[イルカ]] (2018-05-11 (金) 14:12:07)~
~
train.csvとtest.csvはそれぞれ一列目に画像の判定、二列目以降は30*30の画像データを900列(gray scale)で記したものになっています。~
DNNでのrbayesianoptimizationパッケージはそこそこ資料もあるので何とかなるのですが、CNNにするとデータの構造が問題になるようで、どう解決すればいいのかわかりません。~
もし、分かる方がいらっしゃいましたら教えてくださると助かります。~
~
以下にコードとエラー、traceback結果を載せています。~
長くて申し訳ありません。
 > options(max.print=2147483647)
 > library(mxnet)
 > train <- read.csv('C:/Users/User/R/train/getimage_1/train.csv', header = TRUE)
 > test <- read.csv('C:/Users/User/R/train/getimage_1/test.csv', header = TRUE)
 > train <- data.matrix(train)
 > test <- data.matrix(test)
 > train.x <- t(train[, -1])
 > train.y <- train[, 1]
 > test.x <- t(test[, -1])
 > test.y <- test[, 1]
 > dim <- 30
 > channels <- 1
 > test_array <- test.x
 > dim(test_array) <- c(dim, dim, channels, ncol(test.x))
 > train_array <- train.x
 > dim(train_array) <- c(dim, dim, channels, ncol(train.x))
 > 
 > mxnet_bayes <- function(unit1, unit2, unit3, unit4) {
 +     # Model
 +     data <- mx.symbol.Variable('data')
 +     # 1st convolutional layer 5x5 kernel 
 +     conv_1 <- mx.symbol.Convolution(data= data, kernel = c(5, 5), num_filter = unit1)
 +     tanh_1 <- mx.symbol.Activation(data= conv_1, act_type = "relu")
 +     pool_1 <- mx.symbol.Pooling(data = tanh_1, pool_type = "max", kernel = c(2, 2), stride = c(2, 2))
 +     # 2nd convolutional layer 5x5 kernel 
 +     conv_2 <- mx.symbol.Convolution(data = pool_1, kernel = c(5, 5), num_filter = unit2)
 +     tanh_2 <- mx.symbol.Activation(data = conv_2, act_type = "relu")
 +     pool_2 <- mx.symbol.Pooling(data = tanh_2, pool_type = "max", kernel = c(2, 2), stride = c(2, 2))
 +     # 1st fully connected layer
 +     
 +     fcl_1 <- mx.symbol.FullyConnected(data = pool_2, num_hidden = unit3)
 +     tanh_3 <- mx.symbol.Activation(data = fcl_1, act_type = "tanh")
 +     # 2nd fully connected layer
 +     fcl_2 <- mx.symbol.FullyConnected(data = tanh_3, num_hidden = unit4)
 +     # Output
 +     model <- mx.symbol.SoftmaxOutput(data = fcl_2)
 +     # Set seed for reproducibility
 +     mx.set.seed(5000)
 +     # Device used. Sadly not the GPU :-(
 +     device <- mx.cpu()
 +     model <- mx.model.FeedForward.create(model, X = train_array, y = train.y, 
 +                                          ctx = device, 
 +                                          num.round = 20, 
 +                                          array.batch.size = 100, 
 +                                          learning.rate = 0.07, 
 +                                          momentum = 0.99, 
 +                                          wd = 0.0000001, 
 +                                          eval.metric = mx.metric.rmse, 
 +                                          epoch.end.callback = mx.callback.log.train.metric(100), verbose=TRUE)
 + preds <- predict(model, test.x)
 + holdout_score <- rmse(preds, test.y)
 + list(Score=-holdout_score, Pred=-holdout_score)
 + }
 > library(Metrics)
 > library(rBayesianOptimization)
 > opt_res <- BayesianOptimization(mxnet_bayes, 
 +                                  bounds=list(unit1=c(200L, 300L), 
 +                                              unit2=c(10L, 50L), 
 +                                              unit3=c(100L, 150L), 
 +                                              unit4=c(80L, 150L)), 
 +                                  init_points=20, n_iter=1, acq='ei', 
 +                                  kappa=2.576, eps=0.0, verbose=TRUE)
 Start training with 1 devices
 [1] Train-rmse=0.694788357881959
 [2] Train-rmse=0.698895939954201
 [3] Train-rmse=0.702352686365657
 [4] Train-rmse=0.703651129075772
 [5] Train-rmse=0.704188237229376
 [6] Train-rmse=0.704072243436174
 [7] Train-rmse=0.704307457989986
 [8] Train-rmse=0.704044050930675
 [9] Train-rmse=0.704189340228431
 [10] Train-rmse=0.704024917141773
 [11] Train-rmse=0.704088730139514
 [12] Train-rmse=0.704510854642202
 [13] Train-rmse=0.704353378706923
 [14] Train-rmse=0.704272895208268
 [15] Train-rmse=0.704260412182352
 [16] Train-rmse=0.704688375203385
 [17] Train-rmse=0.704331001542547
 [18] Train-rmse=0.704090463144038
 [19] Train-rmse=0.704570122472829
 [20] Train-rmse=0.704810586026211
  symbol$infer.shape(list(...)) でエラー: 
   Error in operator convolution10: [08:26:02] d:\program files (x86)\jenkins\workspace\mxnet\mxnet\src\operator\./convolution-inl.h:377: Check failed: dshp.ndim() == 4U (2 vs. 4) Input data should be 4D in batch-num_filter-y-x
 Timing stopped at: 721.7 39.89 440.3
 > traceback()
 16: stop(list(message = "Error in operator convolution10: [08:26:02] d:\\program files (x86)\\jenkins\\workspace\\mxnet\\mxnet\\src\\operator\\./convolution-inl.h:377: Check failed: dshp.ndim() == 4U (2 vs. 4) Input data should be 4D in batch-num_filter-y-x", 
         call = symbol$infer.shape(list(...)), cppstack = list(file = "", 
             line = -1L, stack = "C++ stack not available on this system")))
 15: .External(list(name = "CppMethod__invoke_notvoid", address = <pointer: 0x000000000858fda0>, 
         dll = list(name = "Rcpp", path = "C:/Users/User/Documents/R/win-library/3.4/Rcpp/libs/x64/Rcpp.dll", 
             dynamicLookup = TRUE, handle = <pointer: 0x000000006abc0000>, 
             info = <pointer: 0x000000000652a390>), numParameters = -1L), 
         <pointer: 0x0000000006522b90>, <pointer: 0x0000000008791920>, 
         .pointer, ...)
 14: symbol$infer.shape(list(...))
 13: mx.symbol.infer.shape(model$symbol, data = c(dimX[[2]], 1))
 12: mx.model.select.layout.predict(X, model)
 11: predict.MXFeedForwardModel(model, test.x)
 10: predict(model, test.x) at #34
 9: (function (unit1, unit2, unit3, unit4) 
    {
        data <- mx.symbol.Variable("data")
        conv_1 <- mx.symbol.Convolution(data = data, kernel = c(5, 
            5), num_filter = unit1)
        tanh_1 <- mx.symbol.Activation(data = conv_1, act_type = "relu")
        pool_1 <- mx.symbol.Pooling(data = tanh_1, pool_type = "max", 
            kernel = c(2, 2), stride = c(2, 2))
        conv_2 <- mx.symbol.Convolution(data = pool_1, kernel = c(5, 
            5), num_filter = unit2)
        tanh_2 <- mx.symbol.Activation(data = conv_2, act_type = "relu")
        pool_2 <- mx.symbol.Pooling(data = tanh_2, pool_type = "max", 
            kernel = c(2, 2), stride = c(2, 2))
        fcl_1 <- mx.symbol.FullyConnected(data = pool_2, num_hidden = unit3)
        tanh_3 <- mx.symbol.Activation(data = fcl_1, act_type = "tanh")
        fcl_2 <- mx.symbol.FullyConnected(data = tanh_3, num_hidden = unit4)
        model <- mx.symbol.SoftmaxOutput(data = fcl_2)
        mx.set.seed(5000)
        device <- mx.cpu()
        model <- mx.model.FeedForward.create(model, X = train_array, 
            y = train.y, ctx = device, num.round = 20, array.batch.size = 100, 
            learning.rate = 0.07, momentum = 0.99, wd = 1e-07, eval.metric = mx.metric.rmse, 
            epoch.end.callback = mx.callback.log.train.metric(100), 
            verbose = TRUE)
        preds <- predict(model, test.x)
        holdout_score <- rmse(preds, test.y)
        list(Score = -holdout_score, Pred = -holdout_score)
    })(unit1 = 296, unit2 = 37, unit3 = 118, unit4 = 95)
 8: do.call(what = FUN, args = as.list(This_Par))
 7: system.time({
        This_Score_Pred <- do.call(what = FUN, args = as.list(This_Par))
    })
 6: eval(expr, pf)
 5: eval(expr, pf)
 4: withVisible(eval(expr, pf))
 3: evalVis(expr)
 2: utils::capture.output({
        This_Time <- system.time({
            This_Score_Pred <- do.call(what = FUN, args = as.list(This_Par))
        })
    })
 1: BayesianOptimization(mxnet_bayes, bounds = list(unit1 = c(200L, 
        300L), unit2 = c(10L, 50L), unit3 = c(100L, 150L), unit4 = c(80L, 
        150L)), init_points = 20, n_iter = 1, acq = "ei", kappa = 2.576, 
        eps = 0, verbose = TRUE)


//
- 何のお役にも立てませんが,パッケージ開発者にご相談なさるのが一番の近道かと??? -- [[河童の屁は,河童にあらず,屁である。]] &new{2018-05-11 (金) 22:24:37};
- 回答ありがとうございます。分かりました。製作者に相談してみようと思います。あまり期待はしませんが… -- [[イルカ]] &new{2018-05-28 (月) 21:53:52};

#comment

**RStudioの言語設定 [#n7a853bc]
>[[代理転載人]] (2018-05-10 (木) 13:02:56)~
~
[下記はトップページへのコメントに間違って記入された書き込み(2018-05-08 (火) 20:45:31)の転載です]~
これからRを使い始めようかと思っている程度の初心者です。RStudioを使いたいのですが私の持っている教科書は初心者向けのはずなのに、あまり親切ではなくインストールがわかりません。私の理解では初めに日本語のRを入れておけばRStudioでは言語を選ぶ必要はないように思うのですが間違っていますか?~

//
- まず「日本語のRを入れた」という考え方が間違いです。「日本語のR」のようなものは存在せず「国際化されたR」があなたの設定に従って日本語を表示しているだけです。言語環境を指定する環境変数を変更すれば別の言語の表示になります。Rをインストールするときに「日本語」を選択しますが、これはインストーラの表示を日本語にするという意味です。日本語のRが存在する訳ではありません。何語でRを表示するかはあなたの自由です。一方、RStudioの方は国際化が十分ではありません。有志が日本語化に取り組んでいますが、現状では基本的に英語メニューで使うことになります。次に示す例は、日本語OSで環境変数を一時的に変更してRを起動した例です。~
es_ES.UTF-8(スペイン語)の場合~
&ref(es_ES01.png,center);~
zh_TW.UTF-8(台湾の中国語)の場合~
&ref(zh_TW01.png);~
このようにRをインストールしたら最初から他言語も一緒にあるのです。環境変数で日本語を指定すると日本語の表示になります。-- [[S]] &new{2018-05-10 (木) 13:12:11};
- Rstudio は国際化されていません。エラーメッセージやファイルメニューを独自に日本語化する試みもあるようですが,完成にはほど遠いようです。もともと国際化を考えて作られていないようなので,望み薄でしょう。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2018-05-13 (日) 00:02:32};

#comment

**ベクトルの要素のうち奇数のものを表示するプログラム [#g1c7118b]
>[[ムーミン]] (2018-05-08 (火) 18:44:48)~
~
よろしくお願いします~
下記プログラムをRコマンダーで実行すると
 エラー:
 <text>
となります、どうしてなのかわかりません教えていただけませんか?
  ar <- c(1,3,5,9,11,17,8,7,21,13)
  for (x in ar) { 
 	if (x %% 2 == 0) next
         cat(x," ") 
      }

//
- 素のママの R で挙げられた5行を実行すると,ちゃんと結果が出ますか?
 > ar <- c(1,3,5,9,11,17,8,7,21,13)
 > for (x in ar) { 
 +     if (x %% 2 == 0) next
 +     cat(x," ") 
 + }
 1  3  5  9  11  17  7  21  13
この通りの結果が出たとすれば,R コマンダーの使い方がまずいんでしょうね。~
なんで,R コマンダーを使いたいんですか?素の R を使えば良いと思うんですけどね。 ~
しょうがないから,R コマンダーを立ち上げてみましたよ(Mac 版なので Windows なら知らない)~
上の欄(R スクリプトの欄)に
 ar <- c(1,3,5,9,11,17,8,7,21,13)
 for (x in ar) { 
	if (x %% 2 == 0) next
        cat(x," ") 
     }
って入れて,「実行」ボタンをクリックしたら,出力欄(下の欄)に,
 > ar <- c(1,3,5,9,11,17,8,7,21,13)
 >  for (x in ar) { 
 + 	if (x %% 2 == 0) next
 +         cat(x," ") 
 +      }
 1  3  5  9  11  17  7  21  13  NULL
って表示されましたけど??~
なんで,末尾が NULL やねん!!!!!!!!!!!!!あほか!~
あなたがやったことをちゃんと記述しないと,回答不能です。(いつもいってるよね)~
私の個人的な意見では,R コマンダーはいわゆるブラックボックスなので,普通に使えば便利なのかも知れないけど,「普通」でない使い方(環境が違うとか,ユーザの経験値が低すぎる??とか)の場合にはかえって害になるのではないかと危惧しているところ(実際,使ってみたけど訳分からんかったという人が多数発生)
まずは,R コンソールを素のママで使うというチュートリアルを経て,R コマンダーの使い方の基礎というのをやってみるのがよいのじゃないかな? -- [[河童の屁は河童にあらず屁である]] &new{2018-05-10 (木) 20:19:26};
- インターネットに乗っていたものをコピペしたものです。RコマンダーをあきらめRレジスタで実行したところうまくいきました。ありがとうございました。た -- [[ムーミン]] &new{2018-05-27 (日) 14:32:36};

#comment

**3次元マトリックスの加工 [#n03202a7]
> (2018-05-02 (水) 16:08:07)~
~
3次元マトリックスmat[100,100,10]は~
100×100の行列で各セル毎に10個の属性値を保有しています。~
~
属性値が最も小さい添え字(1~10)を持つ、~
100×100の行列を作成するにはどのようなコードを書けばよいでしょうか?~

//
- 4x4x3 の小規模な 3 次元配列の例を挙げます。
 > set.seed(123)
 > mat = array(sample(10:15, 48, replace=TRUE), dim=c(4, 4, 3))
 > mat
 , , 1 # 第 3 次元の添え字が 1 の行列
 
      [,1] [,2] [,3] [,4]
 [1,]   11@  15   13   14*     *, @ が何を意味するかは後述
 [2,]   14   10   12   13
 [3,]   12   13   15   10
 [4,]   15   15   12   15
 
 , , 2 # 第 3 次元の添え字が 2 の行列
 
      [,1] [,2] [,3] [,4]
 [1,]   11@  15   13   11*
 [2,]   10   14   14   10
 [3,]   11   13   13   15
 [4,]   15   15   13   15
 
 , , 3 # 第 3 次元の添え字が 3 の行列
 
      [,1] [,2] [,3] [,4]
 [1,]   14@  14   10   10*
 [2,]   14   11   12   10
 [3,]   10   11   12   11
 [4,]   12   11   12   12
あなたが望むのは,以下のような行列ですか?~
第 1 次元が 1,第 2 次元が 4 のとき,第 3 次元が 1,2,3 のときの値は * で印をつけた (14, 11, 10) なので,最小値 10 の添え字である 3 が要素となる。~
もし,それで良ければ,以下の一行でできる。
 > apply(mat, 1:2, which.min)
      [,1] [,2] [,3] [,4]
 [1,]    1    3    3    3
 [2,]    2    1    1    2
 [3,]    3    3    3    1
 [4,]    3    3    1    3
なお,最小値が同値の場合は最小の添え字が要素となる。たとえば,第 1 次元が 1,第 2 次元が 1 のとき,第 3 次元が 1,2,3 のときの値は @ で印をつけた (11, 11, 14) なので,最小値 11 は 2 つあり,その添え字は 1 と 2 であるが,小さい方の 1 が要素となる。~
もしそうでないなら,上の例であなたが望む行列がどのようなものかを示してください。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2018-05-02 (水) 23:42:05};
- 河童の屁は,河童にあらず,屁である。様、ありがとうございます。非常に参考になります。 --  &new{2018-05-07 (月) 21:06:29};

#comment

**四分木、八分木を作成することができるパッケージ [#x80277ef]
> (2018-04-30 (月) 01:24:12)~
~
三次元空間からある形状の特徴を抽出するため~
四分木もしくは八分木を作成することを試行したいのですが~
パッケージはありますでしょうか?~

//

#comment

**参考書籍 [#w1fdef5e]
>[[ムーミン]] (2018-04-21 (土) 18:25:20)~
~
よろしくお願いします~
エクセルからのインポートはできかしたが、そのデーターからグラフを作成しょうとWEBをみて回りましたがさっぱりわかりません。(途中が省かれたり解説なかったり、例がインポートしたものではなかったりなど)”Rによるデーターサイエンス”の本図書館から借りてみましたが上級者向けで理解できませんでした。ホントの初心者です、エクセルからインポートしたデーターをグラフ化することが詳しく解説されている書籍を教えてください。~
めげそうです。~

//
- インポートしたデータであろうがなかろうが,データフレームとして格納されたデータをグラフ化するという点では同じでしょう。&br;まずは,どのようなグラフを作りたいのか? -- [[河童の屁は,河童にあらず,屁である。]] &new{2018-04-21 (土) 21:54:40};
- http://cse.naro.affrc.go.jp/takezawa/r-tips/r/48.html 参考にどうぞ --  &new{2018-04-24 (火) 11:15:50};
- 金先生の「Rによるデーターサイエンス」は初心者向けです。初心者向けなので、上級者向けの詳細をばっさり削られて逆に理解できないという状態でしょうか。まずは、書籍よりもRに付属するマニュアルでRグラフィックの基礎の基礎を理解されてはいかがでしょうか。Rをインストールしていればマニュアルを参照できますが、オンラインで閲覧したければ、[[ここ:https://cran.r-project.org/manuals.html]]を参照して下さい。具体的には、An Introduction to Rの12 Graphical proceduresになります。日本語訳は間瀬先生がこつこつ作成されています。このWikiシステムのどこかにリンクがあったと思います。なお、視覚化する対象データがもともとエクセルのデータであろうが、SPSSのデータであろうが、視覚化作業には全く関係がないです。 -- [[S]] &new{2018-04-24 (火) 11:20:52};
- http://cse.naro.affrc.go.jp/takezawa/r-tips/r/48.html 参考にどうぞ --  &new{2018-04-24 (火) 14:56:56};
- 回答ありがとうございます -- [[ムーミン]] &new{2018-04-24 (火) 18:29:02};

#comment

**R言語へのエクセルからのデーターのインポート [#ze059625]
>[[ムーミン]] (2018-04-18 (水) 20:14:01)~
~
どこに書き込んだらよいかわからなかったので新規投稿に書きました~
よろしくお願いします。~
手順は~
1)data4=read.table("clipboard",header=TRUE)を記述、~
2)データーをコーピー~
3) 1)をエンターキーを押しました。~
又は~
1)、2)を逆にし実行~
~
下記が結果です。何も起こりません~
~
~
R version 3.4.4 (2018-03-15) -- "Someone to Lean On"~
Copyright (C) 2018 The R Foundation for Statistical Computing~
Platform: x86_64-w64-mingw32/x64 (64-bit)~
~
R は、自由なソフトウェアであり、「完全に無保証」です。 ~
一定の条件に従えば、自由にこれを再配布することができます。 ~
配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。 ~
~
R は多くの貢献者による共同プロジェクトです。 ~
詳しくは 'contributors()' と入力してください。 ~
また、R や R のパッケージを出版物で引用する際の形式については ~
'citation()' と入力してください。 ~
~
'demo()' と入力すればデモをみることができます。 ~
'help()' とすればオンラインヘルプが出ます。 ~
'help.start()' で HTML ブラウザによるヘルプがみられます。 ~
'q()' と入力すれば R を終了します。 ~
~
> data4=read.table("clipboard",header=TRUE)~
>~

//
- その操作の後,単に data4 と 5 文字入力した後に,リターンキーを押したらどうなりますか??? -- [[河童の屁は,河童にあらず,屁である。]] &new{2018-04-18 (水) 22:04:59};
- ありがとうございます。できました。 -- [[ムーミン]] &new{2018-04-19 (木) 18:22:36};

#comment

**症例対照研究のロジスティック回帰について [#z55957e9]
>[[AAA]] (2018-04-17 (火) 22:42:38)~
~
お世話になります。~
glm関数で症例対照研究のロジスティック回帰を実行しようとしたのですが、症例対照研究は症例群と対照群のサンプル数を任意に設定できるので、生存率やオッズの算出に意味はないという資料がありました。ロジスティック回帰式の左辺はlog(p/(1-p))で対数オッズを意味していますので、そもそも回帰することができないということになるでしょうか。~
glmに目的変数と説明変数を与えると計算結果自体は出力されるのですが、根本的に前提が間違っているような気がしています。~
~
宜しくお願いします。~

//
- 症例群と対照群を併せて分析しようとしているのでしょうか?ならば,サンプルサイズの差が結果に影響するのは当たり前でしょう。&br;普通は,別々に分析して結果(パラメータ,オッズ比など)の違いを比較・検討するんじゃないですか? -- [[河童の屁は,河童にあらず,屁である。]] &new{2018-04-18 (水) 09:19:07};

#comment

**R言語へのエクセルからのデーターのインポート [#uf3b2318]
>[[ムーミン]] (2018-04-17 (火) 18:19:45)~
~
よろしくお願いします~
下記データーをRコンソール、にクリップボードを介してインポートする方法を教えてください。~
~
R言語のインストールは下記のページを参考にして行いました~
https://qiita.com/FukuharaYohei/items/8e0ddd0af11132031355~
~
インポートは下記ページを参考にしましたがうまくいきません~
http://monge.tec.fukuoka-u.ac.jp/r_analysis/input_clipbord00.html~
~
月 電気量 電気料金~
1月 306  8184~
2月 335  9065~
3月 341  9311~
~
R言語のバージョンは3.4.4~
~
ウィンドウズ10でエクセルのバージョンは1803です~

//
- いやー,ビックリしたわ。初級Q&A15へ投稿したんだねえ。&br;あなたが,どういう風にしたのか,その結果どのようなエラーメッセージが出たのか,コンソールの出力をそのままコピーして,ここに,ペーストしなさい!!! -- [[河童の屁は,河童にあらず,屁である。]] &new{2018-04-17 (火) 20:45:31};
- よろしくお願いします。 -- [[ムーミン]] &new{2018-04-18 (水) 20:02:06};
- R version 3.4.4 (2018-03-15) -- "Someone to Lean On" -- [[ムーミン]] &new{2018-04-18 (水) 20:03:18};

#comment

**2つのデータをlmで回帰したときに傾き切片が有意差を持つかどうか [#h939d75f]
>[[kagakuma]] (2018-04-13 (金) 12:00:31)~
~
両対数を取ると明らかに線形関数に乗るデータがあります。~
このデータをlm()で線形回帰したところR2が0.95でフィッティングしました。~
このデータ群は2つあり、線形回帰したのですが、いずれも違う直線に乗りました。
この結果から傾きと切片が2組でますが、両者の傾きと切片に有意差があるかどうかを確かめる方法はございませんでしょうか。~
Rの機能で閉じていると助かりますが、手計算でもできるならやろうと思います。~
単純には両者を引き算してそれの傾きと切片を求めるという方法も考えましたが、正当性がわかりません。
よろしくおねがいします。

//
- 共分散分析というものです。http://www.snap-tck.com/room04/c01/stat/stat99/stat0204.pdf に重回帰分析との関連が詳しく書かれています。lm でできます。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2018-04-13 (金) 14:26:25};
- 河童様:ご返事ありがとうございます。lmでできる、という言葉の意味が取れなかったので重ねての質問になりますが、二群をクラス分けして一本のデータにしたものをanova(aov(value~factor))に掛けるのと等価の処理でしょうか。共分散分析は勉強したはずなのに思いつきませんでした。精進します。 -- [[kagakuma]] &new{2018-04-13 (金) 17:40:43};
- データを挙げて,結果も示すという分析例があるのですから,まずは,その例題を lm を使ってやってみれば良いと思います。&br;ただ,それをここで書いて見せてあげても仕方ないでしょうということ。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2018-04-13 (金) 19:09:49};

#comment

**入門機械学習による異常検知p137 [#s3c1e1f8]
>[[ksaki]] (2018-04-12 (木) 14:42:13)~
~
お世話になります。~
~
井手剛先生著の~
入門 機械学習による異常検知のp137の実行例5.1を真似て、以下のコマンドを入力しましたが、エラーが出ます。~
何が間違っているか教えてください。~
以下、入力したコマンド
 > data <- read.table("R_r1.csv",header=T)
 > data
                                                   a.b.c.d.e.f.g.h.i.j.k
 1         P2201A1,-4.78,11,1.44,-0.48,3.83,-10.05,15.79,4.31,1.44,18.66
 2     P2201A2,-3.35,-21.53,-11,8.13,-6.22,18.66,-2.87,-0.96,2.39,-11.48
 3            P2201A3,2.88,3.63,4.69,0.61,1.21,1.36,-1.67,1.06,1.06,1.67
 4       P2201A4,-0.48,3.35,-5.26,-6.22,-3.35,-4.78,0.48,-0.48,1.91,3.35
 5    P2201H1,-14.35,-5.26,0,-11.96,-7.66,14.35,-11.48,-5.26,14.35,-0.48
 6  P2201H2,12.92,13.87,0.96,13.4,-0.96,1.91,-12.44,-13.87,-10.05,-14.35
 7           P2201H3,7.18,3.83,3.35,0,-4.31,-8.61,-12.44,-3.35,1.44,5.74
 8     P2201H4,-7.18,-16.27,-16.27,-5.26,2.39,8.61,12.92,12.92,6.7,-0.48
 9        P2201V1,-6.7,-3.83,-12.92,2.39,2.39,2.87,12.44,2.87,1.91,-8.13
 10   P2201V2,-3.03,-18.17,22.71,-27.25,27.25,-15.14,0,-10.6,-18.17,21.2
 11      P2201V3,-4.31,-0.48,1.91,-1.44,-5.26,1.44,3.35,-8.61,-6.7,-2.87
 12        P2201V4,0.48,2.39,1.91,3.35,-1.44,-7.18,-5.74,-1.91,7.66,7.66
 13       P2202A1,-1.44,-0.96,3.35,1.91,-0.48,0.96,-3.35,-2.39,0.48,-6.7
 14         P2202A2,-3.83,0,1.44,-6.22,-3.35,0.96,-1.44,0.48,-0.48,-1.91
 15      P2202A3,0.61,-1.36,-0.15,0.61,0.76,-2.57,-2.12,-2.57,-0.91,0.76
 16        P2202A4,0.45,2.27,-0.45,1.21,0.15,-0.15,0.76,-1.06,-1.21,1.06
 17       P2202H1,5.26,-4.31,-0.48,-1.44,-3.83,0.48,0.48,5.74,-0.48,0.48
 18         P2202H2,-0.96,-1.91,-0.96,-5.74,0,1.91,-5.74,1.44,-1.91,-6.7
 19       P2202H3,-1.67,0.45,-0.45,2.57,2.27,-1.21,-0.61,-0.3,-0.15,0.45
 > cc <- c("a","b","c","d","e","f","g","h","i","j","k")
 > mask <- is.element(colnames(data),cc)
 > Xc <- t(scale(data[,mask]))
 > colnames(Xc) <- t(data[,"a"])
 Error in `[.data.frame`(data, , "a") :  未定義の列が選ばれました
コマンド、ここまで~
〇環境設定
 > 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   
 [3] 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] MASS_7.3-45
 
 loaded via a namespace (and not attached):
 [1] tools_3.3.3

//
- 入力ファイル "R_r1.csv" は自分で入力したのでしょうか。data の次の出力を見ると,19 行のデータは,"a.b.c.d.e.f.g.h.i.j.k" という名前を持つ文字型の1変数として入力されていますよ。その原因のひとつは,変数名の行が "," ではなく "." で区切られていること。もう一つは,もし read.table を使うのなら,sep="," を加えるか,あるいは read.table ではなく read.csv を使う(ファイル名からいうと,read.csv を使う前提なのだろうけど)。 -- [[河童の屁は,河童にあらず,屁である。]] &new{2018-04-12 (木) 18:13:01};
 > data = read.csv("R_r1.csv") # read.csv は header = TRUE はデフォルトなので,指定不要
 > data
          a      b      c      d      e     f      g      h      i      j      k
 1  P2201A1  -4.78  11.00   1.44  -0.48  3.83 -10.05  15.79   4.31   1.44  18.66
 2  P2201A2  -3.35 -21.53 -11.00   8.13 -6.22  18.66  -2.87  -0.96   2.39 -11.48
    中略
 18 P2202H2  -0.96  -1.91  -0.96  -5.74  0.00   1.91  -5.74   1.44  -1.91  -6.70
 19 P2202H3  -1.67   0.45  -0.45   2.57  2.27  -1.21  -0.61  -0.30  -0.15   0.45
 > cc = c("b","c","d","e","f","g","h","i","j","k") # 以下の意図はよく分からないけど,"a" は外さないとエラーが出るよ
 > # cc = letters[2:11] とも書けるけど
 > mask = is.element(colnames(data),cc)
 > Xc = t(scale(data[,mask]))
 > # Xc = t(scale(data[, 2:11])) で十分。mask や cc なんか使わなくても良いし
 > colnames(Xc) = t(data[,"a"]) # t は不要
- 河童様、教えて頂き、感謝の気持ちでいっぱいです。~
"R_r1.csv"は自分で入力しました。テキストで開くと","になっています。が、"."表示になっているのを理解しました。 -- [[ksaki]] &new{2018-04-12 (木) 18:40:19};
- 「テキストで開くと","になっています」&br;そうですか。もしかして,全角のカンマ(あるいは,半角だけど ascii 文字でないカンマ)で入力されていませんか? -- [[河童の屁は,河童にあらず,屁である。]] &new{2018-04-12 (木) 18:44:09};
- エクセルに張り付けた測定記録に追加で自分で各行にabc..を追加して作ったcsvなので、何故上段の1行目と2行目で"."と","なっているのか頭の整理ができません。試して後ほどご報告いたします。 -- [[ksaki]] &new{2018-04-12 (木) 23:46:33};

#comment


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