【R言語】統計解析フリーソフトR 第4章【GNU R】
■ このスレッドは過去ログ倉庫に格納されています
0001132人目の素数さん
2011/01/09(日) 17:31:49統計計算で重宝するデータ型や、複数要素を処理する演算や関数、
解析結果を表示するグラフィックなど、多彩な機能を提供します。
●関連サイト
The R Project
http://www.r-project.org/
RjpWiki
http://www.okada.jp.org/RWiki/
リンク集
http://www.okada.jp.org/RWiki/?%A5%EA%A5%F3%A5%AF%BD%B8
0459132人目の素数さん
2012/04/24(火) 12:32:11.32グラフのサイズを多きすくすれば細かい文字も入るよ。
> pdf(file="test.pdf",width=50,height=10)
> barplot(round(runif(100),1),names.arg=sapply(1:100,function(x){sample(LETTERS,1)}))
> dev.off()
ソートは次の例を参考にしてくれ。
> (a <- data.frame(v=round(rnorm(5),1),n=sample(LETTERS,5)))
v n
1 -0.1 F
2 -0.4 W
3 1.6 M
4 -0.2 R
5 -0.5 V
> a[order(a$v),]
v n
5 -0.5 V
2 -0.4 W
4 -0.2 R
1 -0.1 F
3 1.6 M
> a[order(a$n),]
v n
1 -0.1 F
3 1.6 M
4 -0.2 R
5 -0.5 V
2 -0.4 W
0460459
2012/04/24(火) 12:37:45.20barplot()は
> barplot(round(runif(100),1),names.arg=sample(LETTERS,100,replace=TRUE))
に差し替え。最初はアルファベット2文字で書こうとしたのでsapply()が入った。
0461132人目の素数さん
2012/04/24(火) 22:47:48.17, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0462132人目の素数さん
2012/04/24(火) 23:01:21.57ありがとうございます。ばっちりできました。
0463132人目の素数さん
2012/04/24(火) 23:52:37.90R の公式マニュアル5種類の和訳
このサイトが見れないです
0465132人目の素数さん
2012/04/25(水) 00:59:05.13他にマニュアルの和訳したサイトってないんですか?
0466132人目の素数さん
2012/04/25(水) 14:04:32.25私の知る限りない。
現状では、マニュアルを読む気概がある人=英語でも大丈夫、という空気になっていて、
初心者や英語が苦手な人は、マニュアルを咀嚼した和書を購入すると思う。
0467132人目の素数さん
2012/04/25(水) 21:29:19.12ありがとうございます
0468132人目の素数さん
2012/04/27(金) 03:23:30.97こうして作成したベルトルからTの個数を数えあげるには
どうすればよいでしょうか
for(i in 1:1000){}として一つ一つ値を見るしかないのでしょうか。
0469132人目の素数さん
2012/04/27(金) 06:14:45.59sum(sample(c("T", "F"), 1000, replace = TRUE))
0470132人目の素数さん
2012/04/27(金) 06:17:19.41sample(c("T", "F"), 1000, replace = TRUE)-> x
sum(x=="T")
でした。
0471132人目の素数さん
2012/04/27(金) 11:05:43.29長年のR利用経験から、おっさんが助言する。
"T"や"F"の文字列の使用は、トラブルの原因になる場合があるので、やめておけ。
なかなか気が付きにくいバクの原因になるから、
徹夜でトラブルシューティングするはめになるぞ。
"t"や"f"も使うな。
今回はsample(c("T", "F"), 1000, replace = TRUE)とする代わりに、
sample(c(T, F), 1000, replace = TRUE)とした方がよい。
"T"の代わりにTを、"F"の代わりにFを使うんだ。
0472132人目の素数さん
2012/04/27(金) 14:26:57.77z<-c(3, 5, 9, 7, 13, 17, 19, 3, 5, 7, 9)
y<-c(4, 6, 10, 8, 14, 18, 20, 4, 6, 8, 10)
このx,y,zをもとに
"要素1" xのベクトル
"要素2" yのベクトル
"要素3" zのベクトル
このような表形式で結果をまとめるにはどうすればいいですか?
ベクトルの操作だけでは全体の整形ができないようなのでわかりませんでした
0473132人目の素数さん
2012/04/27(金) 14:31:54.94「表形式で結果をまとめる」の意味が不明瞭。
ftable()案件なのか、rbind(x,y,z)やcbind(x,y,z)でよいのか、
それとも論文にするの表(TeX)にしたいのか、
分かるように伝えてくれ。
0474473
2012/04/27(金) 14:36:29.43>"要素1" xのベクトル
>"要素2" yのベクトル
>"要素3" zのベクトル
これって、例えば、次のような形なんだろうか。
> X <- rbind(x,y,z)
> colnames(X) <- month.name[1:ncol(X)]
> X
January February March April May June July August September October November
x 2 3 5 4 7 9 10 2 3 4 5
y 4 6 10 8 14 18 20 4 6 8 10
z 3 5 9 7 13 17 19 3 5 7 9
0475132人目の素数さん
2012/04/27(金) 15:01:57.09z<-c(3, 5, 9, 7, 13, 17, 19, 3, 5, 7, 9)
y<-c(4, 6, 10, 8, 14, 18, 20, 4, 6, 8, 10)
f = c("要素1","要素2","要素3")
cbind(f,data.frame(rbind(x,y,z)))
こういうこと??
0476132人目の素数さん
2012/04/27(金) 16:25:40.38tex形式ではなくプレーンテキストで結果を見ることができれば十分です
>>473-475のrbindやcbindで大丈夫そうです。ありがとうございます。
ただ欲を言えば[,1]のような見出し部分を取り除ければいいのですが、可能でしょうか。
0477132人目の素数さん
2012/04/27(金) 20:26:45.890478132人目の素数さん
2012/04/27(金) 21:07:02.32真に必要がないのに、[, 1]などを削るのはいかがかと思うが、
次のようにすればどうだろう。
> x<-c(2, 3, 5, 4, 7, 9, 10, 2, 3, 4, 5)
> z<-c(3, 5, 9, 7, 13, 17, 19, 3, 5, 7, 9)
> y<-c(4, 6, 10, 8, 14, 18, 20, 4, 6, 8, 10)
> hoge <- function(x){
+ n <- nrow(x)
+ l <- rownames(x)
+ for(i in 1:n){
+ cat(paste(l[i], "\t"), fill = FALSE)
+ cat(x[i, ], fill = TRUE)
+ }
+ }
> hoge(rbind(x,y,z))
x 2 3 5 4 7 9 10 2 3 4 5
y 4 6 10 8 14 18 20 4 6 8 10
z 3 5 9 7 13 17 19 3 5 7 9
0479132人目の素数さん
2012/04/27(金) 23:02:47.19ありがとうございます。ここまで対応して下さり感謝します。
0480132人目の素数さん
2012/04/28(土) 02:07:58.56gnupack http://gnupack.sourceforge.jp/docs/latest/UsersGuide.htmlのemacsを使って居ます
ESS (http://www.okada.jp.org/RWiki/?ESS)経由でRを利用しているのですが、
割合<-1/3
と書くと
「構文解析中に不正なマルチバイト文字列がありました」
とエラーになります
RGuiのR Consoleからはそういうエラーはでません。
割合の"合"が原因のようで、ESSのやりとりではsjisとして文字コードが解釈されてしまうため、R側が適切に認識できないような気がします。
emacsからRをutf-8で操作できれば問題は解消すると思うのですが、どのように設定することになりますか。
0481132人目の素数さん
2012/04/28(土) 05:34:39.27ttp://cran.r-project.org/bin/linux/ubuntu/
0482132人目の素数さん
2012/04/28(土) 08:45:12.17お客さん、Emacsは初めて?
ttp://tanuzou.com/nuzou/wiki/index.php?emacs%A4%C7%A4%CE%CA%B8%BB%FA%A5%B3%A1%BC%A5%C9%CA%D1%B9%B9
0483480
2012/04/28(土) 09:53:19.07いえ、はじめてではないです
set-buffer-process-coding-systemで
outputをutf-8にすれば入力は問題無くなるのですが、
今度は出力がおかしくなります
例えば、「 作業スペースを保存しますか? [y/n/c]: 」というメッセージは
?X y [ X ? ? ? [y/n/c]:
こうなってしまいます
set-buffer-process-coding-systemのinputをutf-8にしてもそうなったままです
0484132人目の素数さん
2012/04/28(土) 10:46:30.19f <- c(1, 12, 19, 6, 15, 10, 2, 18, 15, 9)
cを階級値、fを度数としてヒストグラムを書きたいのですが、
barplot(f,names.arg=c,space=0)
こうしてヒストグラムを書いたときに0,5,10,15の横線を左から右端まで引く方法はありますか。
またc("101-120", "121-140", "141-160"...)というように、
階級値ではなく階級境界値が与えられたとき、
同じようにヒストグラムを書く方法があれば知りたいです。
その場合にstrsplit()を使って文字列を分割するということは考えたのですが、
その先がわかりませんでした。
0485132人目の素数さん
2012/04/28(土) 11:02:42.35前半の方は無理じゃないかな
0486132人目の素数さん
2012/04/28(土) 12:49:02.44f <- c(1, 12, 19, 6, 15, 10, 2, 18, 15, 9, 1)
x <- c()
for(i in 1:length(f)){
x<-append(x,rep(c[i],f[i]))
}
dx <- data.frame(x=x)
library(ggplot2)
ggplot(dx, aes(x))+ geom_bar(binwidth=1) + geom_hline(yintercept=seq(0,15, by=5))
0487132人目の素数さん
2012/04/28(土) 13:02:37.47これで直るんじゃないかな。
http://rmecab.jp/wiki/index.php?R%A4%CE%C8%F7%CB%BA%CF%BF#v2acbd2d
Rの側では何も設定しなくて大丈夫だから、設定はNTEmacsスレで聞いた方がいいかと。
0488132人目の素数さん
2012/04/28(土) 13:13:33.53abline(h = seq(0, 15 , 5))
ってこと。ちなみにcは関数名なので、代入するとおかしくならない?
0489132人目の素数さん
2012/04/28(土) 13:21:10.490490374
2012/04/28(土) 19:16:35.57どうせ、「なんちゃって」ヒストグラムなんだから、そのままでもいいじゃん。ダメなの?
barplot(f, names.arg=c("101-120", "121-140", "141-160"...), space=0)
それだとあんまりなので、こんな感じ?
f <- c(1, 12, 19, 6, 15, 10, 2, 18, 15, 9)
a <- paste(seq(from = 101, by = 20, along.with = f), sep="-", seq(from = 120, by = 20, along.with = f))
# => [1] "101-120" "121-140" "141-160" "161-180" "181-200" "201-220" "221-240" "241-260" "261-280" "281-300"
c <- sapply(a, function(x) as.numeric(unlist(strsplit(x, "-")))[2])
dist <- c()
for (i in 1:length(c)) {dist <- c(dist, rep(c[i]-1, f[i]))}
hist(dist)
0491132人目の素数さん
2012/04/28(土) 20:38:01.560492132人目の素数さん
2012/04/28(土) 23:15:54.50http://www.ouj.ac.jp/hp/kamoku/H24/kyouyou/A/sangyo/s_1554522.html
これかな
これぐらいの内容をざっと教えているのはいいね
0493132人目の素数さん
2012/04/29(日) 11:21:12.19binaries <- data.frame("1st"=binary)
cbind(binaries,"2nd"=binary,"3rd"=binary)
X1st 2nd 3rd
1 TRUE TRUE TRUE
2 FALSE FALSE FALSE
このデータの順列すべてつまり2^3個分を表示したいのですが、
どうすればいいですか。
TRUE,TRUE,TRUE
TRUE,TRUE,FALSE
TRUE,FALSE,TRUE
TRUE,FALSE,FALSE
こんな風にです
0494132人目の素数さん
2012/04/29(日) 15:04:56.43library(gtools)
permutations(2, 3, c(T, F), repeats.allowed=TRUE)[8:1,]
0495132人目の素数さん
2012/04/30(月) 00:13:16.11ありがとうございます!まさにそれです。
permutation、ずばり順列そのもののコマンドがあるのですか。
勉強になりました。
0496132人目の素数さん
2012/05/03(木) 20:30:15.24, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0497132人目の素数さん
2012/05/05(土) 22:45:04.63, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0498132人目の素数さん
2012/05/06(日) 13:20:53.64, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0499132人目の素数さん
2012/05/06(日) 16:50:58.01, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0500132人目の素数さん
2012/05/08(火) 14:04:54.27========================
險伜捷
"私は彼女のこ\x82"
========================
SetLocaleしてみた
============================
> Sys.getlocale
LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932"
> Sys.setlocale("LC_CTYPE","ja_JP.UTF-8")
警告メッセージ:
In Sys.setlocale("LC_CTYPE", "ja_JP.UTF-8") :
ロケールを "ja_JP.UTF-8" に設定せよとのOS のレポート要求は受け入れられません
==================================
なんかUTF-8に変えられないんだよね
環境はWin7/64bitです
だれか解決策教えて下さいな
0501132人目の素数さん
2012/05/08(火) 14:06:53.60/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0502132人目の素数さん
2012/05/08(火) 14:07:16.16/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0503132人目の素数さん
2012/05/08(火) 14:32:23.18/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0504132人目の素数さん
2012/05/08(火) 19:17:29.11Rとは関係なしにMeCabが使える状態なのかどうかは確認した?
RMeCabはRの中からMeCabをただ単にcallしているだけなので、
そもそもMeCabが使えなかったら、RMeCabも使えない。
0505132人目の素数さん
2012/05/08(火) 19:44:31.59, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0506132人目の素数さん
2012/05/09(水) 12:16:57.42コマンドプロンプト上からMeCab自体はつかえてるっぽいけど文字化けしてる
===============================
> 私は只の数ヲタなんかとは付き合わないわ。
私は只の数ヲ 險伜捷,荳闊ャ,*,*,*,*,*
^ 蜷崎ゥ・繧オ螟画磁邯・*,*,*,*,*
險伜捷,荳闊ャ,*,*,*,*,*
ネ 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
ゥ 險伜捷,荳闊ャ,*,*,*,*,*
ニ 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
ヘ 險伜捷,荳闊ャ,*,*,*,*,*
t 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
き合わないわ。 險伜捷,荳闊ャ,*,*,*,*,*
============================
CMDの文字コードがShift-JISで、MeCabがutf-8版だから
こうなるのはわかるんだけど
============================
932 (ANSI/OEM - 日本語 Shift-JIS)
============================
0507132人目の素数さん
2012/05/09(水) 13:04:31.70Windowsのことはよくわからないけど、
コマンドプロンプトをuft-8になんとかして変更するとか(utf-8な代替ソフトを使うとか)、
MeCabに喰わせる前後で、nkfをかましてUTF-8/CP932の変換を行うとか、
MeCabを使うときだけ、文字化けしない環境(MacOSXやLinux)を使うとか、
真に解決しなければならないものなら、試す価値のある方法はたくさんありそうだ。
あと、SDOUTで文字化けするなら、ファイルにリダイレクトして、
UTF-8を扱えるテキストエディタで開くと文字化けしないのかどうかチェックすることも必要では?
0508132人目の素数さん
2012/05/09(水) 14:15:31.27標準出力して、utf8形式でエディタ(TeraPad)にファイルを読み込んでみたら
なんと一部の文字列が文字化けしてました。MeCabの出力がutf-8ではないのか?
==========================
> echo "頭が良くて数学が出来てかっこいい人。それが必要条件よ。 " | mecab > out.txt
==========================
Terapadでout.txtをutf-8形式で読み込んでみた
===========================
" 名詞,サ変接続,*,*,*,*,*
?a?a? 記号,一般,*,*,*,*,*
? 名詞,固有名詞,組織,*,*,*,*
-? 記号,一般,*,*,*,*,*
? 名詞,固有名詞,組織,*,*,*,*
?? 記号,一般,*,*,*,*,*
w 名詞,固有名詞,組織,*,*,*,*
?a? 記号,一般,*,*,*,*,*
- 略 -
EOS
=========================
Terapadで対応している他のコード(Shift-JIS,JIS,EUC,Unicode)でも
読み込んでみましたが、Utf-8以外だと文字化けしまくってました。
Win7のコマンドプロンプトをutf-8に変更するのは、たしかレジストリを弄る必要あったな
http://sgry.jp/blog/2011/06/26/475/
あとでやってみます
nkfをかませる方法だとRMeCabのソースに書き加えて再ビルドするかんじですか?
それともR側にそういうオプションがあったりします?
0509132人目の素数さん
2012/05/09(水) 14:37:47.21>>507
さっきの文字化けの原因、わかりました。
"頭が良くて数学が〜"の文字列がCP932なのにMeCabに読み込ませていたからでした。
CMDをutf-8にしてもう一度出力してエディタで開いてみたところ
========================
" 名詞,サ変接続,*,*,*,*,*
頭 名詞,一般,*,*,*,*,頭,アタマ,アタマ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
良く 形容詞,自立,*,*,形容詞・アウオ段,連用テ接続,良い,ヨク,ヨク
て 助詞,接続助詞,*,*,*,*,て,テ,テ
数学 名詞,一般,*,*,*,*,数学,スウガク,スーガク
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
出来 動詞,自立,*,*,一段,連用形,出来る,デキ,デキ
- 略 -
EOS
=========================
正常に表示されました。やったね。
つぎはRとMeCabのオプション調べてみます。
作業はなるべくWin7で完結させたいです。
0510132人目の素数さん
2012/05/09(水) 15:36:01.63, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
0511132人目の素数さん
2012/05/09(水) 20:12:11.20, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
0512132人目の素数さん
2012/05/09(水) 21:04:27.28基底
0513132人目の素数さん
2012/05/18(金) 01:25:32.37c <- cbind(1:2)
b+c
このような感じで
2 3
3 4
こういう結果を出すような方法はありますか?
このまま実行したら
>以下にエラー b + c : 適切な配列ではありません
と出ました
0514132人目の素数さん
2012/05/18(金) 05:42:13.210515132人目の素数さん
2012/05/18(金) 13:45:22.19ちょっ、b, cは最高に単純化した例だろw
> outer(b,c,"+")
, , 1, 1
[,1] [,2]
[1,] 2 3
, , 2, 1
[,1] [,2]
[1,] 3 4
となるけど、
> d1 <- 1:2
> d2 <- 1:2
> outer(d1,d2,"+")
[,1] [,2]
[1,] 2 3
[2,] 3 4
となることからヒントを得ると、次のようにすればよい。
> outer(as.vector(b),as.vector(c),"+")
[,1] [,2]
[1,] 2 3
[2,] 3 4
0516132人目の素数さん
2012/05/18(金) 18:05:46.17> line <- '127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "htp://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)" '
> m <- gregexpr("(\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1]?\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5]) ", line, perl=TRUE)
> regmatches(line, m)
[[1]]
[1] "127.0.0.1 "
正規表現が書けるという前提だけど、上に示すとおり格段に難しいわけではない。
従って「非常に面倒かどうか」に対する答えは「全く面倒ではありません。ほぼコピペの世界です。」だ。
0517132人目の素数さん
2012/05/19(土) 00:29:19.34ありがとうございます。>>515がまさに望んでいたものでした。
outer関数についてよく勉強します。
0518132人目の素数さん
2012/05/19(土) 08:44:41.03a2 <- c("b", "a", "f", "c")
a3 <- c("z", "m", "f", "a")
cbind(a1,a2,a3)
それぞれの行で"a"がある回数を求め、
処理結果をベクター、この場合にはc(1,1,0,1)としてまとめるにはどうすればよいでしょうか
0519132人目の素数さん
2012/05/19(土) 09:22:50.09ヒントを差し上げるので自力で考えてください。
> length(grep("a",c("b", "c", "d", "f")))
[1] 0
> length(grep("a",c("a", "b", "d", "f")))
[1] 1
> length(grep("a",c("a", "a", "d", "f")))
[1] 2
行単位で処理を繰り返す関数はapply()
0520132人目の素数さん
2012/05/19(土) 15:06:19.07a1 <- c("a","b","d","f")
a2 <- c("b","a","f","c")
a3 <- c("z","m","f","a")
dat <- cbind(a1,a2,a3)
dat
dat == "a"
margin.table(dat == "a", margin = 1)
apply(dat == "a", MARGIN = 1, FUN = sum)
0521132人目の素数さん
2012/05/19(土) 15:15:20.42おぉ、それなら、
> rowSums(dat == "a")
[1] 1 1 0 1
もうこれでよさそう。
もう少し大きなテーブルでやってみると、
> d <- cbind(sample(letters[1:5],100,replace=TRUE),sample(letters[1:5],100,replace=TRUE),sample(letters[1:5],100,replace=TRUE))
> rowSums(d == "a")
[1] 1 1 0 0 1 0 0 1 0 0 2 0 1 0 2 0 0 1 2 0 0 0 1 0 1 1 1 1 1 1 3 1 1 2 0 1 1
[38] 0 2 0 2 1 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 2 0 2 0 0 1 0 0
[75] 0 0 1 0 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 2 0 1 0
大丈夫そうだ。
# ヒントだけのつもりだったのに。。。
0522132人目の素数さん
2012/05/19(土) 16:52:03.11その手があったか。
速度的には
rowSum()
が有利と思われる。
0523132人目の素数さん
2012/05/19(土) 20:49:13.27, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
0524132人目の素数さん
2012/05/19(土) 23:04:29.94みなさんありがとうございます。
applyとrowsum()の両方を使えるようにします。
0525132人目の素数さん
2012/05/20(日) 00:05:52.54rowSums() だった。大文字小文字を区別するので注意。
http://entertainment-lab.blogspot.jp/2011/12/rapplyrowsums.html?m=1
0526132人目の素数さん
2012/05/23(水) 06:06:44.69, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0527132人目の素数さん
2012/05/23(水) 08:15:18.64, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0528132人目の素数さん
2012/05/24(木) 21:30:30.29Wikiをざっと見ても行列Tipsを検索しても見当たらないので質問させてください
データフレームを数値行列に変換させるにはどうすればよいのでしょうか?
列成分をデータフレームから指定しても、as.matrixなどの変換をしても、
%*%の操作をすると数値行列にしてくださいと言われます
とりあえずデータフレームの数値を使って行列計算をしたいので、誰かサクッと教えていただけると助かりますm(_ _)
m
0529132人目の素数さん
2012/05/25(金) 01:12:42.02多分factorになっていて数字ではないのではないかと思う。
0530132人目の素数さん
2012/05/25(金) 03:03:02.18そしてこれを数字にするには…
0531132人目の素数さん
2012/05/25(金) 03:04:41.500532132人目の素数さん
2012/05/25(金) 09:13:25.21ヘルプには
To transform a factor ‘f’ to
approximately its original numeric values,
as.numeric(levels(f))[f]’ is recommended and slightly more
efficient than ‘as.numeric(as.character(f))’.
て書いてあるけどね。
0533132人目の素数さん
2012/05/25(金) 15:01:44.54そんなやり方があるのか、覚えられないなでも
0534132人目の素数さん
2012/05/25(金) 16:48:14.73今、確認してみたら、as.numeric()だけでも元に数字に戻るね。
> (a <- factor(sample(1:5, 10, replace = TRUE)))
[1] 2 3 1 1 1 1 1 5 2 2
Levels: 1 2 3 5
> as.numeric(a)
[1] 2 3 1 1 1 1 1 4 2 2
> as.numeric(levels(a))[a]
[1] 2 3 1 1 1 1 1 5 2 2
> as.numeric(as.character(a))
[1] 2 3 1 1 1 1 1 5 2 2
前からこうだったっけ?
いつの間にか仕様が変わった?
0535532, 534
2012/05/25(金) 16:50:52.24as.numeric()だと「5」のところが「4」になっているから、
as.numeric(factorクラス)はやっぱり駄目だ。
0536132人目の素数さん
2012/05/25(金) 16:54:11.34> (a <- factor(sample(1:100, 10)))
[1] 24 42 40 33 66 51 20 100 91 26
Levels: 20 24 26 33 40 42 51 66 91 100
> as.numeric(a)
[1] 2 6 5 4 8 7 1 10 9 3
> as.numeric(as.character(a))
[1] 24 42 40 33 66 51 20 100 91 26
> as.numeric(levels(a))[a]
[1] 24 42 40 33 66 51 20 100 91 26
0537132人目の素数さん
2012/05/27(日) 07:33:26.16, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0538132人目の素数さん
2012/05/27(日) 08:50:40.45ご丁寧にどうもです!
as.numericだと変な数字になるから悩んでたのですが、そういう方法もあったのですね
as.matrixだけでも計算できない場合でもこれでよさそうです
ありがとうございました
0539132人目の素数さん
2012/05/29(火) 04:32:41.65, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
0540132人目の素数さん
2012/06/03(日) 20:40:13.33, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0541132人目の素数さん
2012/06/03(日) 23:20:55.48, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0542132人目の素数さん
2012/06/04(月) 00:09:13.82target <- c("abaa","abef","aefe","cafe")
のように、2個のベクトルがあるとき、
pattern の各要素が target の各要素に含まれるかどうかを検索したい。
for 文を使わずに済ます、何かいい方法ある?
例えば上の例では、
[1] "abaa" "abef" "aefe"
のように出力されたら OK です。
つまり、コマンドライン的なら
grep -f pattern target
のようなことを R を使ってやりたいわけです。
0543132人目の素数さん
2012/06/04(月) 01:07:52.08?grepで意味が分からないなら
もうsystem()でいいじゃん
0544132人目の素数さん
2012/06/04(月) 07:28:20.53, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0545132人目の素数さん
2012/06/04(月) 09:11:46.10grep() は、pattern の vector 長が 2 以上の場合、最初の要素しか
使われないのです。その上、target 内の要素の位置をベクトルで返す仕様。
せめて、論理値をベクトルで返してくれたらね。
残念なことに R を動かす環境には grep コマンドがなく、
現在は unix 環境で前処理してるけど、面倒臭いなあと思って
良い方法がないか尋ねた次第です。
0546132人目の素数さん
2012/06/04(月) 09:16:32.700547543
2012/06/04(月) 09:31:57.61なら、下記はどうだろう?
> target[unique(as.numeric(sapply(1:length(pattern), function(i){grep(pattern[i], target)})))]
[1] "abaa" "abef" "aefe"
で、関数化すれば
> f542 <- function(x, y) {target[unique(as.numeric(sapply(1:length(x), function(i){grep(x[i], y)})))]}
> f542(pattern, target)
[1] "abaa" "abef" "aefe"
となる。
apply関数群もなしにすましたいという後出しは禁止。
0548543
2012/06/04(月) 09:38:53.74誤
f542 <- function(x, y) {target[unique(as.numeric(sapply(1:length(x), function(i){grep(x[i], y)})))]}
正
f542 <- function(x, y) {y[unique(as.numeric(sapply(1:length(x), function(i){grep(x[i], y)})))]}
0549542
2012/06/04(月) 10:34:25.66なるほど。確かに目的の処理ができます。
どうもありがとう。
私の頭がforで、applyできていませんでした。
0550132人目の素数さん
2012/06/04(月) 12:34:01.89, '´ _. -‐'''"二ニニ=-`ヽ、
/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0551132人目の素数さん
2012/06/04(月) 19:03:37.28> target[unique(c(sapply(pattern, function(x) grep(x, target))))]
[1] "abaa" "abef" "aefe"
0552551
2012/06/04(月) 19:07:14.04> unique(c(sapply(pattern, function(x) grep(x, target, value=TRUE))))
[1] "abaa" "abef" "aefe"
0553542
2012/06/04(月) 19:39:49.43あとは、target内の要素の順序を保つようにならないものかな。
0554542
2012/06/04(月) 19:47:57.32pattern <- c("ab","ef"); target <- c("abaa","abef","aefe","cafe","abef")
target[sort(unique(c(sapply(pattern, function(x) grep(x, target)))))]
0555132人目の素数さん
2012/06/04(月) 19:49:05.43あぁ、そうだね。
わざわざ1:lenght(pattern)でやるより、簡潔にsapply(pattern, function(x) ...)でよかった。
ご指摘ありがとう。
> target <- apply(matrix(sample(letters[1:6], 4 * 10000, replace = TRUE), ncol = 4), 1, paste, collapse = '')
> pattern <- c("ab","ef")
> system.time(target[unique(unlist(sapply(1:length(pattern), function(i){grep(pattern[i], target)})))])
ユーザ システム 経過
0.004 0.000 0.005
> system.time(unique(c(sapply(pattern, function(x) grep(x, target, value=TRUE)))))
ユーザ システム 経過
0.004 0.000 0.007
速度的にはあまり変わらないみたいだが。
0556542
2012/06/04(月) 21:20:11.29target[sort(unique(unlist(sapply(pattern, function(x) grep(x, target)))))]
あと、greplを使えないかなと思い、>>555 氏の方法でランダム生成した
サイズ 10000 の target に対し、
target[apply(sapply(pattern,function(x)grepl(x,target)),1,any)]
を適用してみましたが、apply系の関数を2重に使うと、当たり前ですが
遅くなりますね。
> pattern <- c("ab","ef")
> target <- apply(matrix(sample(letters[1:6], 4 * 10000, replace = TRUE), ncol = 4), 1, paste, collapse = '')
> system.time(target[unique(unlist(sapply(1:length(pattern), function(i){grep(pattern[i], target)})))])
user system elapsed
0.01 0.00 0.02
> system.time(target[sort(unique(unlist(sapply(pattern, function(x) grep(x, target)))))])
user system elapsed
0.02 0.00 0.02
> system.time(target[apply(sapply(pattern,function(x)grepl(x,target)),1,any)])
user system elapsed
0.05 0.00 0.05
0557542
2012/06/04(月) 21:46:39.76rowSums のほうが、だいぶ速いんだね。知らなかったよ。
> system.time(target[apply(sapply(pattern,function(x)grepl(x,target)),1,any)])
user system elapsed
0.05 0.00 0.05
> system.time(target[as.logical(rowSums(sapply(pattern,function(x)grepl(x,target))))])
user system elapsed
0.01 0.00 0.02
0558132人目の素数さん
2012/06/04(月) 21:52:36.36投稿しようとしたら書かれてた
rowSumsはCで書かれてるはず
lapplyも同様
sapplyはlapplyを呼んでいる
applyはRで書かれていて遅い
■ このスレッドは過去ログ倉庫に格納されています