R初学者です.タイトルの通り,RでSOMをつくりたくいろんなサイトを参考に試行錯誤していますが,うまくいかず困っています.
こちらのサイトを参考に動かしてみました.
http://d.hatena.ne.jp/isseing333/20110224/1298512568
R
1 2library(kohonen) 3library(ggplot2) 4 5#---ここのDimとUseDataを必要に応じて変更する 6Dim <- 10 7UseData <- do.call(cbind, iris[, -5]) 8UseData <- scale(UseData) 9 10 11#------SOMの実行 12GRID <- somgrid(xdim = Dim, ydim = Dim, topo = "hexa") 13DataSom <- som(UseData, grid = GRID) 14 15DataHex <- data.frame(DataSom$codes) 16DataHexStd <- data.frame(scale(DataHex)) 17DataHexStd$x <- rep(1:Dim, Dim) 18DataHexStd$y <- rep(1:Dim, rep(Dim, Dim)) 19 20#---------グラフ 21HighCol <- "#950000" 22LowCol <- "#3500BF" 23 24 25#------textの追加 26DataSomMap <- data.frame(Data = 1:nrow(UseData), 27 x = DataSom$unit.classif - trunc((DataSom$unit.classif - 1)/Dim) * Dim, 28 y = trunc((DataSom$unit.classif - 1)/Dim) + 1) 29DataSomMap$x <- DataSomMap$x + runif(nrow(UseData), -0.5, 0.5) 30DataSomMap$y <- DataSomMap$y + runif(nrow(UseData), -0.5, 0.5) 31DataSomMap <- cbind(DataSomMap, UseData) 32 33 34#------ggplot2 35i <-1 36ggplot(DataHexStd, aes(x, y, col = DataHexStd[, i])) + 37 scale_colour_gradient2(high = LowCol, low = HighCol) + 38 geom_point(size = 190 / Dim, shape = 15) + 39 opts(legend.position = "none", title = names(DataHexStd)[i]) 40
しかし下記のようにエラーがでてきます.
R
1> library(kohonen) 2> library(ggplot2) 3> 4> #---ここのDimとUseDataを必要に応じて変更する 5> Dim <- 10 6> UseData <- do.call(cbind, iris[, -5]) 7> UseData <- scale(UseData) 8> 9> 10> #------SOMの実行 11> GRID <- somgrid(xdim = Dim, ydim = Dim, topo = "hexa") 12> DataSom <- som(UseData, grid = GRID) 13 som(UseData, grid = GRID) でエラー: 使われていない引数 (grid = GRID) 14> 15> DataHex <- data.frame(DataSom$codes) 16> DataHexStd <- data.frame(scale(DataHex)) 17> DataHexStd$x <- rep(1:Dim, Dim) 18 `$<-.data.frame`(`*tmp*`, x, value = c(1L, 2L, 3L, 4L, 5L, 6L, でエラー: 19 replacement has 100 rows, data has 0 20> DataHexStd$y <- rep(1:Dim, rep(Dim, Dim)) 21 `$<-.data.frame`(`*tmp*`, y, value = c(1L, 1L, 1L, 1L, 1L, 1L, でエラー: 22 replacement has 100 rows, data has 0 23> 24> #---------グラフ 25> HighCol <- "#950000" 26> LowCol <- "#3500BF" 27> 28> 29> #------textの追加 30> DataSomMap <- data.frame(Data = 1:nrow(UseData), 31+ x = DataSom$unit.classif - trunc((DataSom$unit.classif - 1)/Dim) * Dim, 32+ y = trunc((DataSom$unit.classif - 1)/Dim) + 1) 33 data.frame(Data = 1:nrow(UseData), x = DataSom$unit.classif - でエラー: 34 引数に異なる列数のデータフレームが含まれています: 150, 0 35> DataSomMap$x <- DataSomMap$x + runif(nrow(UseData), -0.5, 0.5) 36 エラー: オブジェクト 'DataSomMap' がありません 37> DataSomMap$y <- DataSomMap$y + runif(nrow(UseData), -0.5, 0.5) 38 エラー: オブジェクト 'DataSomMap' がありません 39> DataSomMap <- cbind(DataSomMap, UseData) 40 cbind(DataSomMap, UseData) でエラー: 41 オブジェクト 'DataSomMap' がありません 42> 43> 44> #------ggplot2 45> i <-1 46> ggplot(DataHexStd, aes(x, y, col = DataHexStd[, i])) + 47+ scale_colour_gradient2(high = LowCol, low = HighCol) + 48+ geom_point(size = 190 / Dim, shape = 15) + 49+ opts(legend.position = "none", title = names(DataHexStd)[i]) 50 opts(legend.position = "none", title = names(DataHexStd)[i]) でエラー: 51 関数 "opts" を見つけることができませんでした 52
将来的にはUseDataに図のようなcsvを入れたいと考えています.
このエラーの詳細や対策方法などご教授いただけると幸いです.
//追記
Rを再起動したところ,下記のようなエラーが出ました.途中まではうまく通るようになったようです,回答ありがとうございます.
R
1> library(kohonen) 2> library(ggplot2) 3> 4> #---ここのDimとUseDataを必要に応じて変更する 5> Dim <- 10 6> UseData <- do.call(cbind, iris[, -5]) 7> UseData <- scale(UseData) 8> 9> 10> #------SOMの実行 11> GRID <- somgrid(xdim = Dim, ydim = Dim, topo = "hexa") 12> DataSom <- som(UseData, grid = GRID) 13> 14> DataHex <- data.frame(DataSom$codes) 15> DataHexStd <- data.frame(scale(DataHex)) 16> DataHexStd$x <- rep(1:Dim, Dim) 17> DataHexStd$y <- rep(1:Dim, rep(Dim, Dim)) 18> 19> #---------グラフ 20> HighCol <- "#950000" 21> LowCol <- "#3500BF" 22> 23> 24> #------textの追加 25> DataSomMap <- data.frame(Data = 1:nrow(UseData), 26+ x = DataSom$unit.classif - trunc((DataSom$unit.classif - 1)/Dim) * Dim, 27+ y = trunc((DataSom$unit.classif - 1)/Dim) + 1) 28> DataSomMap$x <- DataSomMap$x + runif(nrow(UseData), -0.5, 0.5) 29> DataSomMap$y <- DataSomMap$y + runif(nrow(UseData), -0.5, 0.5) 30> DataSomMap <- cbind(DataSomMap, UseData) 31> 32> 33> #------ggplot2 34> i <-1 35> ggplot(DataHexStd, aes(x, y, col = DataHexStd[, i])) + 36+ scale_colour_gradient2(high = LowCol, low = HighCol) + 37+ geom_point(size = 190 / Dim, shape = 15) + 38+ opts(legend.position = "none", title = names(DataHexStd)[i]) 39 opts(legend.position = "none", title = names(DataHexStd)[i]) でエラー: 40 関数 "opts" を見つけることができませんでした
回答1件