回答: 演習1のあたりの以下のコードのことかと思います。
data <- rnorm(30,0,1) # rnorm(n,m,d) は平均0、分散1の正規分布から乱数をn個生成する関数これは乱数を用いて数を30個生成し、dataという変数に記憶しています。 この『乱数生成』においては、予めある仕掛けをしておかないと、 「同じ乱数が生成されない」、 つまり「このウェブページとは異なる乱数が作られ」ます。 それについては過去の記事を御覧ください。そして、乱数を使っている場合では、 同じ結果にならなくても心配しないでください。
> samples <- sample(1:150,75) > head(samples) [1] 14 8 150 145 33 83 > iris.train <- iris(samples) エラー: 関数 "iris" を見つけることができませんでした > iris.train <- iris(samples,] エラー: 予想外の ']' です in "iris.train <- iris(samples,]"
回答:
ここらへんはプログラミング言語Cと似ているので、C言語にたとえて説明します。
funcをCの関数とし、a,b,cを変数とすれば、
funcを呼び出す(関数funcの実行)は
func(a,b,c)
と書きますよね。また、
このようにC言語では、関数の引数には丸括弧(と)を使い、配列のインデックスには角括弧[と]を使いました。
Rでも同様です。
また、
> iris.train <- iris(samples) ではなく > iris.train <- iris[samples] とする そして > iris.train <- iris(samples,] ではなく > iris.train <- iris[samples,] とする括弧には意味があるのです。 プログラミング言語においてはどの括弧を使っても良い、ということはありません。
回答:
多くの方がこれで詰まっていましたが、これに対する方策を与えた方も多かったです
(過去の講義を参考にした方もいるようです)。
講義で述べた方法の応用として以下のように書くことができます。
ただしここでは、irisデータが、1~50がsetosa,
51~100がversicolor、101~150がvirginicaという3種のデータから構成されているということを使っています。
all <- 1:50 # 1~50番目までのデータを考える g1 <- sample(all,10) # 10個乱数で選ぶ # g1 = 16 6 28 26 38 47 22 12 33 35 g2 <- sample(all[-g1], 10) # g1以外のデータから10個乱数で選ぶ # g2 = 45 15 40 20 7 1 36 39 19 2 g3 <- sample(all[-c(g1,g2)],10) # g1, g2以外のデータから10個乱数で選ぶ # g3 = 31 18 13 42 14 41 49 5 32 44 g4 <- sample(all[-c(g1,g2,g3)],10) # g1, g2, g3以外のデータから10個乱数で選ぶ # g4 = 34 43 29 8 48 25 11 46 27 9 g5 <- all[-c(g1,g2,g3,g4)] # g5 = 3 4 10 17 21 23 24 30 37 50 #### ここまでが準備 # irisデータを5等分する Group1 <- iris[c(g1, g1+50, g1+100),] Group2 <- iris[c(g2, g2+50, g2+100),] Group3 <- iris[c(g3, g3+50, g3+100),] Group4 <- iris[c(g4, g4+50, g4+100),] Group5 <-iris[ c(g5, g5+50, g5+100),]別解: (T114***さんによるもの)
A <- sample(1:50,50) B <- sample(51:100,50) C <- sample(101:150,50) Group1 <- iris[c(A[1:10],B[1:10],C[1:10]),] Group2 <- iris[c(A[11:20],B[11:20],C[11:20]),] Group3 <- iris[c(A[21:30],B[21:30],C[21:30]),] Group4 <- iris[c(A[31:40],B[31:40],C[31:40]),] Group5 <- iris[c(A[41:50],B[41:50],C[41:50]),]
回答: ネットで調べてみるのは良いことです。ただし、このパッケージは SVM(サポートベクターマシン)という、ニューラルネットとは別の分類器の ためのものです。ですから、課題の主旨からは外れています。
> test <- function(x){#関数の書き直し + setwd("R") + z <- readLines("x") + return(z) + } > test(test.txt) setwd("R") でエラー: 作業ディレクトリを変更できません #作業ディレク トリを「ドキュメント」にしていなかった > test(test.txt) file(con, "r") でエラー: コネクションを開くことができません 追加情報: 警告メッセージ: file(con, "r") で: ファイル 'x' を開くことができません: No such file or directory #存在しないファイル名を指定してしまった > test <- function(x)#関数の書き直し + setwd("R") + x <- readLines("test.text") + } > test <- function(x){#関数の書き直し + setwd("R") + x <- readLines("test.txt") + return(x) + } > text(z) text.default(z) でエラー: plot.new has not been called yet
file(con, "r") でエラー: コネクションを開くことができません 追加情報: 警告メッセージ: ↑このエラーの理由がわかりませんでした また、 最後のに実行した時、plotのグラフが表示された理由もわかりませんでした。回答: 「追加情報:警告メッセージ」とあるのは、その前に『エラー』メッセージを 出しているので、それだけで修正するのに必要な情報は提示してあるが、 さらに「追加して」警告メッセージを出した、というものです。 見れば分かるように、ほとんど同じ内容なので、余計といえば余計ですね。
回答: ちょっと駆け足的にRについて紹介してきましたが、 次回からはRのプログラムを書いたりすることはあまりなく、 用意されたR関数を動かす程度なので、あまり心配することはありません。 それでも予習、復習はしっかりしておきましょう。