1 名前:132人目の素数さん mailto:sage [2011/01/09(日) 17:31:49 ] R は統計計算とグラフィックスのための言語・環境です。 統計計算で重宝するデータ型や、複数要素を処理する演算や関数、 解析結果を表示するグラフィックなど、多彩な機能を提供します。 ●関連サイト The R Project www.r-project.org/ RjpWiki www.okada.jp.org/RWiki/ リンク集 www.okada.jp.org/RWiki/?%A5%EA%A5%F3%A5%AF%BD%B8
684 名前:681 mailto:sage [2012/12/22(土) 09:52:42.80 ] >>682 ,>>683 ありがとうございます。 説明が悪くて申し訳ありません。 ファクター値は因子ではありません。 只の実数値の意味です。 DF CODE DATA "A" 1 "B" 2 "C" 3 "D" 4 "E" 5 と単純なデータフレームを考えた場合、 DATAの大きさでデータフレームを分割し5個のデータフレームにしたいのです。 現状はforループとquantile(DF$B, prob = i / 5)という関数を用いて分割している次第です。 よろしくお願いいたします。
685 名前:132人目の素数さん mailto:sage [2012/12/22(土) 12:16:27.28 ] >>684 意味が全く分からないのはオレだけか? そもそもDF$Bやiはどこから出てきたんだ。 data.frameの要素にdata.frameを入れた階層構造なのか? もしかすると、こういうことか? > DF <- data.frame(CODE = sample(LETTERS, 100, replace = TRUE), DATA = sample(1:5, 100, replace = TRUE)) というDFがあったとして、 > lapply(unique(DF$DATA), function(x){DF[DF$DATA == x, ]}) とすると5つのデータフレームをもつリストが出来る。
686 名前:681 mailto:sage [2012/12/22(土) 12:33:52.37 ] >>685 申し訳ありません。DF$BではなくDF$DATAです。 ご提示していただいた例ですとDATAが整数の場合には正しく分割できるのですが、 実際には整数ではなく実数値です。 例えば、 DF <- data.frame(rand) colnames(DF) <- c("a", "b", "c") というデータフレームを作成した場合、DF$bの大きさで任意の分位に分割したいのです。。。。
687 名前:132人目の素数さん mailto:sage [2012/12/22(土) 13:38:29.27 ] >>686 まだ意味が分からないorz 回答する側に憶測に憶測を重ねさせる質問の仕方はどうなのか、 後出しがガシガシ出てくる質問の態度はいかがかと思うが、 丁寧な口調なので、もう1度だけ「想像」した範囲で答える。 > DF <- data.frame(a = runif(100), b = runif(100), c = runif(100)) というDFがあったとして、DF$bを任意の分位、たとえば、0.1と0.3と0.5と0.9で区切って5分割したいとする。 > i <- findInterval(DF$b, c(0.1, 0.3, 0.5, 0.9)) > lapply(unique(i), function(x){DF$b[x == i]}) これで5分割されたデータのリストが得られる。 データフレーム構造を保持したいという話なら、 > lapply(unique(i), function(x){DF[x == i, ]}) これでも、これが質問の意図と異なるなら、他の人にパス。
688 名前:687 mailto:sage [2012/12/22(土) 13:51:45.59 ] unique(i)だと区分の順番が気になるので、順番通りにするように修正 > lapply(0:max(i), function(x){DF$b[x == i]}) および > lapply(0:max(i), function(x){DF[x == i, ]})
689 名前:132人目の素数さん mailto:sage [2012/12/22(土) 20:11:43.37 ] 改行、空白がなくて読みにくコードを 見やすく自動で整形する方法ってありますか? 他の言語だと整形ツールがあるんだけど Rにもあるのかな
690 名前:132人目の素数さん mailto:sage [2012/12/22(土) 23:19:32.32 ] >>689 外部ツールとしてはないけど、そういう関数もある(名前は忘れた)。
691 名前:681 mailto:sage [2012/12/23(日) 01:16:13.76 ] >>687 ありがとうございます。 分位は等分位です。 quantileで分位点を求めて、教えていただいた方法で無事いけました。 質問の仕方が悪かったようで申し訳ありませんでした。 以後気を付けたいと思います。 本当にありがとうございました
692 名前:132人目の素数さん mailto:sage [2012/12/23(日) 20:34:14.28 ] >>689 https://github.com/yihui/formatR/wiki
693 名前:令嬢 mailto:sage [2012/12/23(日) 23:13:41.87 ] __ノ)-'´ ̄ ̄`ー- 、_ , '´ _. -‐'''"二ニニ=-`ヽ、 / /:::::; -‐''" `ーノ / /:::::/ \ / /::::::/ | | | | | |:::::/ / | | | | | | | |::/ / / | | || | | ,ハ .| ,ハ| | |/ / / /| ,ハノ| /|ノレ,ニ|ル' | | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。 . | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。 | l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。 | ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて | /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。 | (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は? | / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら? | |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \ . | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \ | /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 | | |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、 | |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄| | /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_| | |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/ | /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
694 名前:132人目の素数さん mailto:sage [2012/12/25(火) 01:22:28.37 ] 各位に使用できる数字(または文字)に制限がある n桁の整数(文字列)を生成したい。 1桁目: 1, 2 2桁目: 4, 5, 6 3桁目: 7, 8 この場合だと 2*3*2 = 12 通りの整数が作れます。 forを3重にすればできるのですが、このやり方は避けたい。 n桁になっても対応できるコードを書きたいです。 いいやり方、教えてください。
695 名前:132人目の素数さん mailto:sage [2012/12/25(火) 10:23:00.30 ] >>694 またまた説明不足で不明瞭な質問が来た。同じ人か。 例では、3桁の12種類全ての整数(文字列)を得たいのか、 それとも1つの3桁の整数(文字列)を得たいのか、 判然としない。 後者と想定して、例示すると、 a <- list() a[[1]] <- 1:2 a[[2]] <- 4:6 a[[3]] <- 7:8 というリストがあった場合、 > paste(sapply(a, sample, 1), collapse = "") [1] "247" aの要素数がn個でも(つまり、n桁でも)同じ。
696 名前:132人目の素数さん mailto:sage [2012/12/25(火) 21:10:27.10 ] 前者です。 [,1] [,2] [,3] [1,] 1 4 7 [2,] 1 4 8 [3,] 1 5 7 [4,] 1 5 8 [5,] 1 6 7 [6,] 1 6 8 [7,] 2 4 7 [8,] 2 4 8 [9,] 2 5 7 [10,] 2 5 8 [11,] 2 6 7 [12,] 2 6 8
697 名前:695 mailto:sage [2012/12/25(火) 21:25:57.68 ] >>696 それなら、expand.grid()を再帰的に使えば良い。 入れ子にするのは面倒なので二項演算子を定義すると、 > "%+%" <- function(x, y) apply(expand.grid(x, y), 1, paste, collapse = "") > a[[1]] %+% a[[2]] %+% a[[3]] [1] "147" "247" "157" "257" "167" "267" "148" "248" "158" "258" "168" "268" あとはRecall()を使って、これを一般化すれば良い。 > f696 <- function(x) { f <- function(i){ if(i > 0) return(Recall(i - 1) %+% x[[i]]) + else return("")} + return(f(length(x))) + } > f696(a) [1] "147" "247" "157" "257" "167" "267" "148" "248" "158" "258" "168" "268" 次に質問するときは、最初から>>696 のように書いた方が良いよ。 または、 > forを3重にすればできるのですが、 この具体的なコードを書くとか。抽象的に説明すると、解釈の余地に幅が生まれる。
698 名前:132人目の素数さん mailto:sage [2012/12/25(火) 21:29:26.76 ] >>697 親切にありがとうございます。精進します!
699 名前:695 mailto:sage [2012/12/25(火) 21:31:46.70 ] あぁ、すまない。 n桁の整数は連結させるのではなく、 桁をばらばらにして行列にしたかったのか。 それなら話はもっと簡単だ。 pasteの処理をやめれば良い
700 名前:132人目の素数さん mailto:sage [2012/12/25(火) 22:31:04.88 ] expand.grid(a) (function() as.matrix((expand.grid(a)->x)[do.call(order, x),]))()
701 名前:132人目の素数さん mailto:sage [2012/12/26(水) 09:37:32.22 ] >>700 あぁ、しまった。expand.grid()は3次元次元でも使えたのか。 >>700 さんの別解。rev()を2重に使う。 as.matrix(rev(expand.grid(rev(a))))
702 名前:令嬢 mailto:age [2012/12/26(水) 21:17:40.81 ] __ノ)-'´ ̄ ̄`ー- 、_ , '´ _. -‐'''"二ニニ=-`ヽ、 / /:::::; -‐''" `ーノ / /:::::/ \ / /::::::/ | | | | | |:::::/ / | | | | | | | |::/ / / | | || | | ,ハ .| ,ハ| | |/ / / /| ,ハノ| /|ノレ,ニ|ル' | | | / / レ',二、レ′ ,ィイ|゙/ . | \ ∠イ ,イイ| ,`-' | | l^,人| ` `-' ゝ | このスレには馬と鹿と豚さんしかいないのね。 | ` -'\ ー' 人 | /(l __/ ヽ、 | (:::::`‐-、__ |::::`、 ヒニニヽ、 | / `‐-、::::::::::`‐-、::::\ /,ニニ、\ | |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \ . | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \ | /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 | | |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、 | |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄| | /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_| | |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/ | /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
703 名前:132人目の素数さん mailto:700 [2012/12/26(水) 23:44:03.23 ] >>701 revの二重使いは柔軟な思考ですね。参考になりました。
704 名前:狢 ◆yEy4lYsULH68 mailto:age [2012/12/27(木) 09:03:34.27 ] 狢 >増田哲也こそ笑い者。 >俺が逮捕されて懲戒免職させる日本こそ沈めって、一発逆転をねらっている愚民そのもの。 >
705 名前:132人目の素数さん mailto:sage [2012/12/29(土) 23:41:13.98 ] データフレームにあるQ01, Q02, Q03, Q04...というような連番の変数って、分析の際にまとめて指定することはできないのでしょうか。 SASでQ01-Q50などとやるようなことをしたいのですが、方法がわかりません。ご存知の方、お教えください。 50項目で主成分分析をしようなどという場合を考えると、気が遠くなります。
706 名前:132人目の素数さん [2012/12/30(日) 07:20:47.80 ] knowledge-bank.org/social/politics/?main=./003//001
707 名前:132人目の素数さん mailto:sage [2012/12/30(日) 08:39:23.19 ] >>705 outcome ~ . って指定するとすべての変数が入る
708 名前:132人目の素数さん mailto:sage [2012/12/30(日) 11:33:43.75 ] >>705 できるけど、"Q01-Q50"のような記法ではできない。 >>707 が助言するようにまるごと入れることもできるし、 paste()とas.formula()をつかって長いformulaを作成することもできる。 formulaのヘルプにある例 > xnam <- paste0("x", 1:25) > (fmla <- as.formula(paste("y ~ ", paste(xnam, collapse= "+")))) y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19 + x20 + x21 + x22 + x23 + x24 + x25
709 名前:132人目の素数さん mailto:sage [2012/12/30(日) 12:25:38.54 ] >>707 ,708 ありがとうございます。 これで、エクセルのオートフィルで変数リスト作成してRのコンソールに貼り付ける作業から解放されます。
710 名前:132人目の素数さん [2012/12/30(日) 14:53:50.70 ] あ
711 名前:132人目の素数さん [2012/12/30(日) 14:55:00.08 ] 私はR言語で学習をしている初心者です。 その中で、irisデータを用いてコマンドの学習をしているのですがエラーが出てしまい先に進めなくなってしまいました。 以下にコマンドを載せますものが私の用いたものです。 library(rpart) library(adabag) data <- iris ndata <- nrow(data) #乱数指定 set.seed(101) #学習データ(data.learn)とテストデータ(data.test)に分ける ridx <- sample(ndata, ndata * 0.5) data.learn <- data[ridx,] data.test <- data[-ridx,] #3-fold crossvalidation、弱識別器の数を10とし、学習データに対しboostingを行ったものをdata.adaCvに代入 data.adaCv <- boosting.cv(Species ~ .,data = data.learn,v=3, mfinal = 10) #テストデータに学習データを照らし合わせる。 resultPredict <- predict(data.adaCv, newdata = data.test, type="class") というコマンドですが「predict」を行った際に 以下にエラー UseMethod("predict") : 'predict' をクラス "character" のオブジェクトに適用できるようなメソッドがありません というエラーが出てしまい、ネットや参考文献を見てもわからず投稿させていただきました。 もしこのエラーの解決方法がお分かりのかたがいらっしゃいましたらよろしくお願いします。
712 名前:695 mailto:sage [2012/12/30(日) 20:21:19.02 ] >>711 >以下にエラー UseMethod("predict") : >'predict' をクラス "character" のオブジェクトに適用できるようなメソッドがありません 分かるも何も、書いてあるままだよ。 > class(data.adaCv) [1] "list" boosting.cv()は、predictメソッドをもつクラスを吐かず、単純にlistクラスを吐く。 それだけの話。
713 名前:132人目の素数さん mailto:sage [2012/12/30(日) 20:22:36.64 ] >>712 名前欄にゴミが入ったorz
714 名前:132人目の素数さん [2012/12/30(日) 23:08:32.14 ] >>712 さん>>711 です。回答ありがとうございます。 実行してみたところおっしゃたように"list"と出力されました。 ということはboosting.cvで得られた変数(data.adaCv)を用いての predictはできないということでしょうか? また、もしできるのであればそのコマンドと使用例を教えていただきたいです。 宜しくお願いします。
715 名前:132人目の素数さん mailto:age [2012/12/31(月) 15:27:18.84 ] __ノ)-'´ ̄ ̄`ー- 、_ , '´ _. -‐'''"二ニニ=-`ヽ、 / /:::::; -‐''" `ーノ / /:::::/ \ / /::::::/ | | | | | |:::::/ / | | | | | | | |::/ / / | | || | | ,ハ .| ,ハ| | |/ / / /| ,ハノ| /|ノレ,ニ|ル' | | | / / レ',二、レ′ ,ィイ|゙/ . | \ ∠イ ,イイ| ,`-' | | l^,人| ` `-' ゝ | このスレには馬と鹿と豚さんしかいないのね。 | ` -'\ ー' 人 | /(l __/ ヽ、 | (:::::`‐-、__ |::::`、 ヒニニヽ、 | / `‐-、::::::::::`‐-、::::\ /,ニニ、\ | |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \ . | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \ | /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 | | |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、 | |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄| | /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_| | |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/ | /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
716 名前:132人目の素数さん mailto:sage [2013/01/02(水) 11:10:09.30 ] ビギニングス to Rって読んだけど プログラミング言語の解説というかRをアプリケーションとしてみた解説って感じで 言語的なことはほとんど勉強になりませんでしたね。 やっぱ俺はS言語の本読むべきでしたね。
717 名前:132人目の素数さん mailto:sage [2013/01/04(金) 09:40:38.25 ] >>716 ttp://www.amazon.co.jp/dp/4873115795 ttp://www.amazon.co.jp/dp/4621061313
718 名前:132人目の素数さん mailto:sage [2013/01/04(金) 10:07:16.37 ] >>714 Rjpwikiの方に書いたからもういいと思うのだけど、念のため。 boosting.cvの中身は見た? bootsting()とpredict.boosting()を中で使っているよね。 > boosting.cv function (formula, data, v = 10, boos = TRUE, mfinal = 100, coeflearn = "Breiman", control) { vardep <- data[, as.character(formula[[2]])] n <- length(vardep) if (v > n) stop(" v should be in [2, n]") if (v < 2) stop(" v should be in [2, n]") predclass <- rep("O", n) for (i in 1:v) { test <- v * (0:floor(n/v)) + i test <- test[test < n + 1] fit <- boosting(formula, data[-test, ], boos, mfinal, coeflearn, control = control) fit.predict <- predict.boosting(fit, data[test, ]) predclass[test] <- fit.predict$class cat("i: ", c(i, date()), "\n") } tabla <- table(predclass, vardep, dnn = c("Predicted Class", "Observed Class")) error <- 1 - sum(predclass == vardep)/n output <- list(class = predclass, confusion = tabla, error = error) } <environment: namespace:adabag> このfit.predictが欲しいなら、自分でbooting.cv()をコピーして編集すればよい。 そうじゃないなら、何をしたいのか、もっとはっきり伝えること。
719 名前:132人目の素数さん mailto:sage [2013/01/05(土) 03:55:18.11 ] >>716 Rノウハウ本の購入層はやりたい解析があってそこまでたどり着ければいい って人が大多数なんじゃないかな、んでそれにあわせた内容になってると +αを求める人は多くは無いと思う
720 名前:132人目の素数さん [2013/01/05(土) 12:25:03.16 ] <スプライン補間:yからxを予測する方法> 質問です。 x<-c(1,2,3,4,5,6) y<-c(1,4,9,7,6,8) というデータがあったとして、 sp<-smooth.spline(x,y) predict(sp,x=2.5) とすると、xが2.5のときのyの値は下記のように予測できます。 $x [1] 2.5 $y [1] 6.923206 逆にyからxを求める方法がお分かりの方、いらっしゃいましたらお教えください。
721 名前:132人目の素数さん mailto:sage [2013/01/05(土) 14:02:30.39 ] >>720 stats:::predict.smooth.spline.fitにざっと目を通した限りは、 できなさそうだけど。 GAMFIT (lib.stat.cmu.edu/general/gamfit )の中までは読んでいない。 sp$fitの中身を使って数学的に解くか、xを細かい間隔でpredict()に与えて、 与えられたyに最も近いものを選ぶしかなさそうだが、 ちゃんとした識者に答えてもらった方がよいかも。 後者なら、 predict.y <- function(y){ x0 <- c(1, 2, 3, 4, 5, 6) y0 <- c(1, 4, 9, 7, 6, 8) sp <- smooth.spline(x0, y0) i <- seq(from = min(x0), to = max(x0), by = 0.0001) Y <- predict(sp, i) j <- which.min((Y$y - y)^2) return(list(y = y, x = i[j], fitted = Y$y[j])) } こんな感じでよいのでは。 > predict.y(2.345) $y [1] 2.345 $x [1] 1.4487 $fitted [1] 2.345004
722 名前:132人目の素数さん mailto:age [2013/01/05(土) 14:47:31.66 ] __ノ)-'´ ̄ ̄`ー- 、_ , '´ _. -‐'''"二ニニ=-`ヽ、 / /:::::; -‐''" `ーノ / /:::::/ \ / /::::::/ | | | | | |:::::/ / | | | | | | | |::/ / / | | || | | ,ハ .| ,ハ| | |/ / / /| ,ハノ| /|ノレ,ニ|ル' | | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。 . | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。 | l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。 | ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて | /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。 | (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は? | / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら? | |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \ . | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \ | /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 | | |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、 | |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄| | /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_| | |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/ | /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
723 名前:132人目の素数さん [2013/01/05(土) 16:46:53.71 ] >721 ありがとうございました。参考になりました。
724 名前:132人目の素数さん mailto:age [2013/01/05(土) 20:24:09.52 ] __ノ)-'´ ̄ ̄`ー- 、_ , '´ _. -‐'''"二ニニ=-`ヽ、 / /:::::; -‐''" `ーノ / /:::::/ \ / /::::::/ | | | | | |:::::/ / | | | | | | | |::/ / / | | || | | ,ハ .| ,ハ| | |/ / / /| ,ハノ| /|ノレ,ニ|ル' | | | / / レ',二、レ′ ,ィイ|゙/ . | \ ∠イ ,イイ| ,`-' | | l^,人| ` `-' ゝ | このスレには馬と鹿と豚さんしかいないのね。 | ` -'\ ー' 人 | /(l __/ ヽ、 | (:::::`‐-、__ |::::`、 ヒニニヽ、 | / `‐-、::::::::::`‐-、::::\ /,ニニ、\ | |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \ . | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \ | /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 | | |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、 | |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄| | /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_| | |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/ | /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
725 名前:132人目の素数さん mailto:sage [2013/01/07(月) 16:01:51.28 ] >>716 いまさらだけどビギニングス ガイド イン Rのミススペルな。
726 名前:132人目の素数さん mailto:sage [2013/01/07(月) 18:48:16.16 ] >>725 ttp://www.amazon.com/dp/0387938362 これのことか? でも「ビギニングス ガイド イン R」じゃないぞ。
727 名前:132人目の素数さん mailto:sage [2013/01/09(水) 09:49:00.54 ] またミスすぺるブチこみました。 正確には ビギニングス ガイド イン R でした。
728 名前:132人目の素数さん mailto:sage [2013/01/11(金) 23:37:12.84 ] 以下のようなデータフレームを仮定 コード 日付1 日付2 日付3 データ1 データ2 データ3 0001 201201 201103 201003 52 33 34 0002 201203 NA NA 22 NA 3 0003 201103 201001 200901 32 2 73 0004 201003 200905 200804 98 87 88 0005 NA NA NA NA NA NA 0006 201105 201102 201009 NA 32 55 日付XとデータXが対応 日付1>日付2>日付3となっている この時、日付が201101よりも大きい日付に対応するNAでないデータを取得したい 即ち望まれる出力は以下の通り コード 日付 データ 0001 201201 52 0002 201203 22 0003 201103 32 0004 NA NA 0005 NA NA 0006 201102 32 このように取得したい場合どのような操作をすればよいでしょうか? 実際には数千のコードがあるのでループで一行ずつ回すのはあまり現実的ではありません。 よろしくお願いします
729 名前:132人目の素数さん mailto:sage [2013/01/12(土) 03:32:35.10 ] >>728 宿題じゃないよね? > a <- scan(text="0001 201201 201103 201003 52 33 34 + 0002 201203 NA NA 22 NA 3 + 0003 201103 201001 200901 32 2 73 + 0004 201003 200905 200804 98 87 88 + 0005 NA NA NA NA NA NA + 0006 201105 201102 201009 NA 32 55") Read 42 items > b <- data.frame(t(matrix(a, ncol = 6))) > names(b) <- c("コード", paste0("日付", 1:3), paste0("データ", 1:3)) で、ヒントは次の通り。 > m <- ((b[, 2:4] > 201101) & (b[, 2:4] & b[, 5:7])) * b[, 2:4] > m[(m == 0)] <- NA > i <- apply(m, 1, which.max) > unlist(sapply(1:length(i), function(j){ifelse(length(i[j][[1]]) == 0, NA, (b[j, 5:7])[i[j][[1]]])})) [1] 52 22 32 NA NA 32 > unlist(sapply(1:length(i), function(j){ifelse(length(i[j][[1]]) == 0, NA, (b[j, 2:4])[i[j][[1]]])})) [1] 201201 201203 201103 NA NA 201102
730 名前:132人目の素数さん mailto:sage [2013/01/13(日) 13:37:10.99 ] 正規分布の乱数を作って、確率密度(面積)の合計が1になるのを 確認したいのですが、↓だと何故か2になってしまいます。 どこがダメなんだしょう? x = rnorm(500) hist(x, prob=T) sum(hist(x, prob=T)$density)
731 名前:132人目の素数さん mailto:sage [2013/01/13(日) 13:52:12.00 ] >>730 乱数の分散を変えてみると、理解出来るのでは? > set.seed(1234); sum(hist(rnorm(500, sd = 2), prob = TRUE)$density) [1] 1 > set.seed(1234); sum(hist(rnorm(500, sd = 5), prob = TRUE)$density) [1] 0.2 > set.seed(1234); sum(hist(rnorm(500, sd = .1), prob = TRUE)$density) [1] 20
732 名前:132人目の素数さん mailto:sage [2013/01/13(日) 15:13:55.16 ] >>731 わからないよ (´・ω・`) sum(hist(x, prob=T)$density) と sum(hist(x, prob=T)$count/500) は同じになると思ったんだけど、違うってことですかね??
733 名前:132人目の素数さん mailto:sage [2013/01/14(月) 13:24:07.24 ] >>732 730 の最後の式では、確率密度の積分 ∫f(x) dx = 1 の dx の部分が 抜けてしまっています。 hist を用いる場合、dx に相当する値は diff(hist(x, prob=T)$breaks) で求めることができます。 x <- rnorm(500) h <- hist(x, prob=T) sum(h$density * diff(h$breaks))
734 名前:132人目の素数さん mailto:sage [2013/01/14(月) 22:54:04.42 ] >>733 理解できました! ありがとうございます!
735 名前:132人目の素数さん mailto:sage [2013/01/16(水) 12:15:17.92 ] 質問失礼します 言語を英語にすると、立ち上げた際のメッセージなどはきちんと英語になるのですが、 cor.test()などの関数を実行すると出力が日本語メッセージでかえってきます 日本語のwinOSでRの返答を完全に英語にする方法をどなたかご存知ないでしょうか? ちなみに↓サイトの起動アイコンカスタマイズの方法で英語化しています ttp://minato.sip21c.org/swtips/R.html
736 名前:132人目の素数さん mailto:sage [2013/01/16(水) 12:41:27.37 ] >>735 妙な挙動ですね。WindowsだとLANG=Cがどこかで強制的に書き換えられるのでしょうか。 Sys.getenv()で、メッセージが日本語になる前後でLANGやLC_ALLを確認してみてはどうでしょうか。 LANGを確認するには、Sys.getenv("LANG")とすればOKです。 なお、メッセージの言語を指定する環境変数はLC_MESSAGESです。 環境変数によるローケルの管理を知っておいても損はないと思います。 例えば、ttp://www.itmedia.co.jp/enterprise/articles/0605/16/news027.html の「環境変数の階層」とかに目を通すとか。
737 名前:736 mailto:sage [2013/01/16(水) 12:54:26.20 ] 追記。 ttp://www.itmedia.co.jp/enterprise/articles/0605/16/news027.html を読んで思い出したが、昔、起動アイコンに、LANG=Cじゃなくて、language=enをつけていた。 「R language=en」でググるとCRANのR for Windows FAQがヒット。 ttp://cran.r-project.org/bin/windows/base/rw-FAQ.html ... if you want to ensure that menus and messages are in (American) English, LANGUAGE=en. とか、 You can ensure that R uses English messages by appending LANGUAGE=en to the shortcut you use to start R, or setting it in the Rconsole file. って書いてあるよ。FAQに。
738 名前:132人目の素数さん mailto:sage [2013/01/16(水) 23:32:51.99 ] >>729 遅くなりましたがありがとうございました。 無事動作しました。
739 名前:728 mailto:sage [2013/01/16(水) 23:41:01.80 ] すいません。 再び質問です。 横型ではなく縦型の場合はいかがでしょうか? 以下のようなデータフレームを仮定します コード 日付 データ 0001 20120101 332 0001 20120111 542 0002 20120201 5554 0002 20120301 52334 0002 20120511 15234 0003 20121101 35234 0003 20121201 NA 0004 20120501 75234 0005 20120601 NA 各コードに対してデータがNAでない日付が最大の値を取得したいのです。 NAしかない場合にはその値を取得します。 上記の場合以下の値が期待されます。 コード 日付 データ 0001 20120111 542 0002 20120511 15234 0003 20121101 35234 0004 20120501 75234 0005 20120601 NA ヒントだけでも結構ですのでよろしくお願いいたします。
740 名前:132人目の素数さん mailto:sage [2013/01/17(木) 00:37:07.40 ] mac版のRでの質問、失礼します。 ローカルに保存したCSVファイルではなく、直接ダウンロード、読込みをするファイルの文字化けを解消したいのですが、 エンコードを変える記述では上手くいきません。 ご教示いただけないでしょうか? 例) url.data <- "maxis.muam.jp/e/fund/download/" eMAXIS <- read.table(url.data, sep=",", stringsAsFactor = FALSE)
741 名前:132人目の素数さん mailto:sage [2013/01/17(木) 14:18:27.23 ] >>740 fileEncoding = "SJIS" オプションとかではダメってこと?
742 名前:132人目の素数さん mailto:sage [2013/01/17(木) 14:25:14.37 ] >>739 plyrにあるddply()でIDで分割してwhich.max()で日付が最大のところのindexをとって、その場所の数字を取ればいいかな。 NAの処理を条件分岐を使わないでやるなら、ID日付でソートしたうえで、ddply()の中でzooのna.locf()を使えばいいか? 結構重くなってしまうかも。
743 名前:132人目の素数さん mailto:age [2013/01/17(木) 19:30:55.74 ] __ノ)-'´ ̄ ̄`ー- 、_ , '´ _. -‐'''"二ニニ=-`ヽ、 / /:::::; -‐''" `ーノ / /:::::/ \ / /::::::/ | | | | | |:::::/ / | | | | | | | |::/ / / | | || | | ,ハ .| ,ハ| | |/ / / /| ,ハノ| /|ノレ,ニ|ル' | | | / / レ',二、レ′ ,ィイ|゙/ . | \ ∠イ ,イイ| ,`-' | | l^,人| ` `-' ゝ | このスレは馬と鹿と豚さんばかりね。 | ` -'\ ー' 人 | /(l __/ ヽ、 | (:::::`‐-、__ |::::`、 ヒニニヽ、 | / `‐-、::::::::::`‐-、::::\ /,ニニ、\ | |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \ . | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \ | /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 | | |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、 | |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄| | /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_| | |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/ | /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
744 名前:132人目の素数さん mailto:sage [2013/01/17(木) 22:40:29.47 ] >>742 ありがとうございます。 ddplyで無事いけました。 20万行程度のデータフレームですが、数秒で完了するので問題ありませんでした。
745 名前:132人目の素数さん mailto:sage [2013/01/18(金) 01:06:24.60 ] >>741 すみません。勘違いしてました。 オプションでいけました。 ご指摘ありがとうございます。
746 名前:132人目の素数さん mailto:sage [2013/01/26(土) 23:13:16.48 ] RMySQLがインストールできず困っています。 > install.packages("RMySQL", type="source") Installing package(s) into ‘D:/program_files/R-2.15.2/library’ (as ‘lib’ is unspecified) URL 'cran.rstudio.com/src/contrib/RMySQL_0.9-3.tar.gz ' を試しています Content type 'application/x-gzip' length 165363 bytes (161 Kb) 開かれた URL downloaded 161 Kb * installing *source* package 'RMySQL' ... ** パッケージ 'RMySQL' の解凍およびMD5サムの検証に成功しました checking for $MYSQL_HOME... D:program_filesMySQL MYSQL_HOME is set but does not point to a directory ERROR: configuration failed for package 'RMySQL' * removing 'D:/program_files/R-2.15.2/library/RMySQL' Warning in install.packages : 命令 'D:/PROGRA~1/R-215~1.2/bin/x64/R CMD INSTALL -l "D:/program_files/R-2.15.2/library" C:\Users\<<User>>\AppData\Local\Temp\RtmpmAoBu3/downloaded_packages/RMySQL_0.9-3.tar.gz' の実行は状態 1 を持ちました Warning in install.packages : installation of package ‘RMySQL’ had non-zero exit status The downloaded source packages are in ‘C:\Users\<<User>>\AppData\Local\Temp\RtmpmAoBu3\downloaded_packages’ が出て、MYSQL_HOMEの値がダメなんだと思いますが、mysql自体にはパスが通るので合ってるはずです。どこが悪いんでしょうか?
747 名前:132人目の素数さん mailto:sage [2013/01/27(日) 08:48:14.43 ] >>746 これってソースしかないの?
748 名前:746 mailto:sage [2013/01/27(日) 23:38:33.32 ] ごめんなさい。自己解決しました やっぱりMYSQL_HOMEの値がおかしかったようです。
749 名前:132人目の素数さん mailto:sage [2013/02/01(金) 10:37:40.43 ] win版のRについて質問があります Rjpwikiの時間の数値変換を、使っているデータの時間フォーマットにあわせてアレンジしてるんですが date2num <- function(x, ...) { .day <- as.numeric(substr(x,10,11)) .hour <- as.numeric(substr(x,13,14)) .minute <- as.numeric(substr(x,16,17)) .second <- as.numeric(substr(x,19,20)) .year <- as.numeric(substr(x,2,5)) .mon <- as.numeric(substr(x,7,8)) a <- .day - 1 b <- .year - 1970 c <- 1 if(.mon==2) c <- 31 else if(.mon==3) c <- 59 else if(.mon==4) c <- 90 else if(.mon==5) c <- 120 else if(.mon==6) c <- 151 else if(.mon==7) c <- 181 else if(.mon==8) c <- 212 else if(.mon==9) c <- 243 else if(.mon==10) c <- 273 else if(.mon==11) c <- 304 else if(.mon==12) c <- 334 else if(.mon==1) c <-0 else m <-1
750 名前:132人目の素数さん mailto:sage [2013/02/01(金) 10:40:10.94 ] file<-sprintf("%03d",.mon) cat(file) # 画面に出力 cat("\n") # 改行コード file<-sprintf("%03d",a) cat(file) # 画面に出力 cat("\n") # 改行コード file<-sprintf("%03d",c) cat(file) # 画面に出力 cat("\n") # 改行コード c<-c+a file<-sprintf("%03d",c) cat(file) # 画面に出力 cat("\n") # 改行コード return(b*31556926+c*86400+a*86400+.hour*3600+.minute*60+.second) } これに" 2012/11/30 16:50:00"のような時刻データを date,sum 2012/12/05 20:30:00,17012 2012/12/05 20:30:00,16512 2012/12/05 19:53:00,16512 2012/12/05 19:53:00,16012 以上のようなデータフレームで入力しているのですが 月を調べているif文が1度しか動きません if文が問題なのだと思っているのですがどう直せばよいものでしょうか
751 名前:132人目の素数さん mailto:sage [2013/02/01(金) 11:19:52.70 ] >>750 よく分からない。date2numの引数はxだけなのに、なんで、dateとsumのデータフレームを入れるの? それに、月を7文字目と8文字目ってしているけど、6文字目と7文字目じゃないの? > date2num("2012/12/05 20:30:00") 以下にエラー if (.mon == 2) c <- 31 else if (.mon == 3) c <- 59 else if (.mon == (from #11) : TRUE/FALSE が必要なところが欠損値です [snip] 再現できるように質問しようよ。 もっと言えば、 > as.numeric(as.POSIXlt("2012/12/05 20:30:00")) [1] 1354707000 とかを使うのは嫌いなの?
752 名前:132人目の素数さん mailto:sage [2013/02/01(金) 12:21:01.54 ] すみません 単純に使い方が分からず力技でどうにかやってみた感じだったのでこういう形になっていました 自分の力が及ばないせいでデータファイルを作るとき時刻データの前にどうしても消えない半角スペースがあって それで6番目と7番目ではなく7番目8番目になっていますorz それと > as.numeric(as.POSIXlt("2012/12/05 20:30:00")) [1] 1354707000 これをみて目からうろこでした、自分のやってたことの馬鹿さ加減にあきれました 御助言ありがとうございました
753 名前:132人目の素数さん mailto:sage [2013/02/01(金) 13:26:36.91 ] >>752 >時刻データの前にどうしても消えない半角スペース 関数を自作するレベルなのになぜw 例えば、 > (a <- c(" 2013-02-01 13:21:17", "2013-01-01 09:21:17", " 2013-03-01 11:21:17")) [1] " 2013-02-01 13:21:17" "2013-01-01 09:21:17" " 2013-03-01 11:21:17" こんな感じで、時刻前に空白があったりなかったりするなら、 > library(stringr) > str_trim(a) [1] "2013-02-01 13:21:17" "2013-01-01 09:21:17" "2013-03-01 11:21:17" これでよいのでは? オプションなしでは、前後の空白を取り除くから、前だけならそのように指定する。
754 名前:132人目の素数さん mailto:sage [2013/02/01(金) 13:49:46.73 ] なるほど、Rの方でtrimするって手もありましたね なにからなにまでありがとうございます
755 名前:132人目の素数さん mailto:sage [2013/02/01(金) 14:11:14.62 ] >>754 >Rの方でtrimするって手もありましたね 別にRの外でも、どこででも空白を削除すれば良いと思う。 例えば下記のようなcsvがあったら、 $ cat tmp.csv "A","B","C" "BE DAC","Jan",0.35 "AC BDE","Feb",0.34 " EBACD","Mar",0.66 " DABEC","Apr",0.44 "BEA CD","May",0.84 "CDA EB","Jun",0.3 "EDCAB ","Jul",0.59 "CBEA D","Aug",0.53 "ECDA B","Sep",0.44 "ABDCE ","Oct",0.33 $ sed -e 's/¥" ¥([^ ,]*¥)/¥"¥1/g' tmp.csv "A","B","C" "BE DAC","Jan",0.35 "AC BDE","Feb",0.34 "EBACD","Mar",0.66 "DABEC","Apr",0.44 "BEA CD","May",0.84 "CDA EB","Jun",0.3 "EDCAB ","Jul",0.59 "CBEA D","Aug",0.53 "ECDA B","Sep",0.44 "ABDCE ","Oct",0.33 とすると3,4行目にあった文字列前の空白を消せる。
756 名前:132人目の素数さん mailto:sage [2013/02/02(土) 10:13:07.27 ] Win版Rで質問失礼します cse.naro.affrc.go.jp/takezawa/r-tips/r/43.html 上記サイトの複数の列に対してソートを行う場合は関数を使用して 同じように a b c 11 1 2 11 12 1 1 12 9 2 4 9 10 2 3 10 7 3 6 7 8 3 5 8 5 5 8 5 6 5 7 6 4 7 9 4 1 9 12 1 2 9 11 2 3 9 10 3 というデータフレームをaを昇順に整列しaで同じものがあった場合はcの小さいものを上にするようにしたいのですが In Ops.factor(mmm, each) : < 因子に対しては無意味です というエラーが出てうまくいきません どこが問題でしょうか?
757 名前:132人目の素数さん mailto:sage [2013/02/02(土) 10:18:28.45 ] データフレーム訂正します a b c 1 2 11 1 1 12 2 4 9 2 3 10 3 6 7 3 5 8 5 8 5 5 7 6 7 9 4 9 12 1 9 11 2 9 10 3 です 実際にはデータフレーム名test1で sortlist <- order(test1$a, pmax(test1$a,test1$c)) test1[sortlist,] 以上に実行しました
758 名前:756,757 mailto:sage [2013/02/02(土) 10:45:26.08 ] すいません 自己解決しました
759 名前:132人目の素数さん mailto:sage [2013/02/02(土) 11:01:54.12 ] >>758 複数カラムをキーにしたソートなんて考えたことがなかった。 いったいどんなときに必要になるの? # 表計算ソフトのように「見せる」目的なら理解できるけど。
760 名前:132人目の素数さん mailto:sage [2013/02/02(土) 11:09:52.57 ] 順位相関などを見るときにそういう処理をする可能性はあると思う
761 名前:132人目の素数さん mailto:sage [2013/02/02(土) 12:03:35.44 ] 再び質問失礼します a,b 3,5 2,3 2,2 2,1 1,3 1,1 a列は必ず降順になっているときに b列が降順になっていないとき この例では5行目1,3ですが これを削除したいのですが 関数化して自動で判別して削除したいです どのようにしたら良いでしょうか
762 名前:132人目の素数さん mailto:sage [2013/02/02(土) 12:16:56.00 ] 複数の列でのソートは doByパッケージのorderBy()が使いやすい。
763 名前:132人目の素数さん mailto:sage [2013/02/02(土) 12:36:52.26 ] >>761 pmax()というのを初めて知った。 bの列を一行下げて頭にInfをいれたものをcとしてデータフレームにいれる、bとcに対してpmax()して、結果をdとしてデータフレームにいれる。dがbと一致しているところを落とす。 でどうだろう?
764 名前:761 mailto:sage [2013/02/02(土) 13:18:11.28 ] >>763 御助言ありがとうございます しかし当方最近Rを使いだしたもので何をどうすればいいのか分かりません・・・ あつかましいのですが具体的にどんな感じに書けばいいでしょうか
765 名前:132人目の素数さん mailto:sage [2013/02/02(土) 14:23:56.55 ] >>764 dat = read.csv(text = "a,b 3,5 2,3 2,2 2,1 1,3 1,1") dat dat$c = c(Inf , head(dat$b, -1)) dat with(dat, pmax(b, c)) dat$d = with(dat, pmax(b, c)) == dat$c dat dat[dat$d,] を想定。関数化されてないけど。もっと大きい例で動くはチェックしていない。
766 名前:132人目の素数さん mailto:sage [2013/02/02(土) 15:20:57.47 ] >>763 さんの解答にインスパイアされた別解。 > dat = read.csv(text = "a,b + 3,5 + 2,3 + 2,2 + 2,1 + 1,3 + 1,1") > dat[c(TRUE, diff(dat$b) < 0), ] a b 1 3 5 2 2 3 3 2 2 4 2 1 6 1 1
767 名前:132人目の素数さん mailto:sage [2013/02/02(土) 15:35:34.61 ] >>766 の追記。 bが例えば、10, 8, 6, 9, 8, 5とかになっていると、 >>766 の方法を1回だけ適用したのでは通用しない。 > d2 a b 1 3 10 2 2 8 3 2 6 4 2 9 5 1 8 6 1 5 > d2[c(TRUE, diff(d2$b) < 0), ] a b 1 3 10 2 2 8 3 2 6 5 1 8 6 1 5 そのため、十分な回数を繰り返し適用することになる。 > sum(diff(d2$b) > 0) [1] 1 これが0になるのが、終了条件。
768 名前:132人目の素数さん mailto:sage [2013/02/02(土) 19:57:32.38 ] cummin を使えばいいか?
769 名前:132人目の素数さん mailto:sage [2013/02/03(日) 12:03:27.26 ] これなら1,9,8,1の並びも一回で行けるか? dat = read.csv(text = "a,b 3,5 2,3 2,2 2,1 1,9 1,8 1,1") dat dat$cummin <- cummin(dat$b) dat$correct <- with(dat, b == cummin) dat dat[dat$correct == TRUE,]
770 名前:132人目の素数さん mailto:sage [2013/02/03(日) 13:34:45.07 ] r-base-core がみつからないとか言われるでござる…
771 名前:132人目の素数さん mailto:sage [2013/02/03(日) 22:46:23.58 ] ビッグデータに関する本で 膨大なデータを統計処理して活用するために RやJavaのhadoopが使える人材が求められてるって書いてあったな
772 名前:132人目の素数さん mailto:sage [2013/02/05(火) 08:32:45.91 ] すみません、グラフで箱の左下をゼロで直交するようにしたいのですが (軸オンリーではなく箱で書きたいのです)、 Baseパッケージで何か良い方法ありませんでしょうか? 今は↓のように書いていますが、ablineで線を引くとはみ出してしまう等手間がかかるので、 簡単にかける方法をご存知の方おりましたらお願いします plot(x=0,y=0,xlim=c(0,6),ylim=c(0,3),lwd=2,ann=F,cex.axis=1,las=1,type="n",axes=F) axis(side=1,seq(0,6),lab=F,pos=0,tck=0); axis(side=2,seq(0,3),lab=F,tck=0,pos=0) axis(side=3,at=0:6,lab=F,tck=0,pos=3); axis(side=4,at=0:3,tck=0,lab=F,pos=6) axis(side=1,at=0,tck=0,pos=0) >>735-37 レス忘れていました、申し訳ありません Rconsoleが2つ存在し妙な読み込みがされていたのが原因でした アドバイスありがとうございました
773 名前:132人目の素数さん mailto:sage [2013/02/05(火) 09:04:30.55 ] >>772 > plot.new() > box() とすると、左下に原点が来るけど。 > points(0, 0)
774 名前:132人目の素数さん mailto:sage [2013/02/05(火) 09:17:22.01 ] >>773 の追記 R的なアプローチとして、複雑な手続きを関数化して簡単にする方法がある。 f772 <- function(){ plot(x=0,y=0,xlim=c(0,6),ylim=c(0,3),lwd=2,ann=F,cex.axis=1,las=1,type="n",axes=F) axis(side=1,seq(0,6),lab=F,pos=0,tck=0); axis(side=2,seq(0,3),lab=F,tck=0,pos=0) axis(side=3,at=0:6,lab=F,tck=0,pos=3); axis(side=4,at=0:3,tck=0,lab=F,pos=6) axis(side=1,at=0,tck=0,pos=0) } とスクリプトの最初に書いておけば、 > f772() 以降は、これだけでよい。Baseパッケージのコマンドを探すよりも簡単。
775 名前:132人目の素数さん [2013/02/06(水) 03:22:55.78 ] xaxs/yaxs (AXis Style)のことか plot(1,1, xaxs = "i", yaxs = "i", xlim = c(0,1), ylim = c(0,1), tck = 0) ?parでbaseの細かいオプションの説明がみられる。 これも役立つかも www.stat.auckland.ac.nz/~paul/RG2e/chapter3.html
776 名前:132人目の素数さん mailto:age [2013/02/06(水) 06:43:29.05 ] __ノ)-'´ ̄ ̄`ー- 、_ , '´ _. -‐'''"二ニニ=-`ヽ、 / /:::::; -‐''" `ーノ / /:::::/ \ / /::::::/ | | | | | |:::::/ / | | | | | | | |::/ / / | | || | | ,ハ .| ,ハ| | |/ / / /| ,ハノ| /|ノレ,ニ|ル' | | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。 . | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。 | l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。 | ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて | /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。 | (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は? | / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら? | |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \ . | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \ | /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 | | |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、 | |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄| | /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_| | |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/ | /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
777 名前:132人目の素数さん mailto:sage [2013/02/06(水) 17:31:58.49 ] >>773-775 レスありがとうございます 非常に参考になりました
778 名前:132人目の素数さん mailto:sage [2013/02/15(金) 09:19:22.40 ] barplot と plotを重ねるときに、 軸(目盛の位置)がずれてしまうのですが、 揃える方法ってあるのでしょうか? barplot(1:10, xlim=c(0,10), ylim=c(0,10)) par(new=T) plot(1:10, col=2, xlim=c(0,10), ylim=c(0,10))
779 名前:132人目の素数さん mailto:sage [2013/02/15(金) 10:52:07.52 ] >>778 よく分からないが、 > a <- barplot(1:10); points(a, 1:10, col = 2) こうしたいの?
780 名前:132人目の素数さん mailto:sage [2013/02/15(金) 11:18:55.04 ] >>779 縦軸の0の位置が、barplot と plot で違うんで揃えたいんです。
781 名前:132人目の素数さん mailto:sage [2013/02/15(金) 11:34:08.72 ] >>780 いや、そもそも揃っているけど。 > a <- barplot(1:10); points(a, rep(0, 10), col = 2)
782 名前:781 mailto:sage [2013/02/15(金) 11:39:38.94 ] >>780 あっ、分かった。plot()を無理矢理使っているんだ。 addオプションをサポートしているクラス以外では、plot()を重ねるのは禁止。 想定外の使用形態。 描画を重ねるとき、普通はpoints()やlines()やaxis()を使う。
783 名前:132人目の素数さん mailto:sage [2013/02/15(金) 11:44:27.17 ] >>782 なるほど。ありがとうございます。
784 名前:781 mailto:sage [2013/02/15(金) 11:53:12.37 ] ちょっと説明が不親切だったかも知れないから、追記。 例えば、棒グラフと折れ線グラフを重ねたかったら、次のようにする。 x <- 1:10 n <- length(x) y <- jitter(rep(10, n), 10) op <- par(mai = c(1.02, 0.82, 0.82, 0.82)) a <- barplot(x, ylim = c(0, 13)) points(a, y, type = "l", lty = 2) axis(4, label = (0:6) * 2 / 100, at = (0:6) * 2, las = 2) par(op)