- 数学の分類はとても難しい
- こんな議論やこんな議論もある
- 難しいので、格納してから考えるのに向いている
- 僕は、まず、何かしらで知識をつけることが必要だと思うので、岩波書店基礎数学の列挙をスタート地点とすることにした
- 5分類されている名称で4分類)
- さらに細分類されていて、
- 入力ファイルを作ろう
数学分類,分岐,学問名,-,数学
数学分類,分岐,分野名,数学,代数学,解析学,幾何学,線型代数学
代数学分類,分岐,亜分野名,代数学,群論,加群,ガロア理論,ホモロジー代数,保型関数,可換環論,数論
線型代数学分類,分岐,亜分野名,線型代数学,線形空間,アフィン幾何,ジョルダン標準形,テンソル代数,二次形式,線型不等式,群の表現論
解析学分類,分岐,亜分野名,解析学,集合,位相,関数解析,解析,複素解析,確率論,現代解析,フーリエ解析,常微分方程式,偏微分方程式,楕円型方程式,非線型発展方程式,超関数論,スペクトル理論
幾何学分類,分岐,亜分野名,幾何学,微分幾何学,多様体論,位相幾何学,代数幾何学,組合せ位相幾何学,微分位相幾何学,Lie群,複素多様体論
infile <- read.table("input.txt", sep = ",", fill =TRUE)
infile.m <- as.matrix(infile)
feature1 <- infile.m[,1]
feature2 <- infile.m[,2]
feature3 <- infile.m[,3]
feature1.uni <- unique(feature1)
feature2.uni <- unique(feature2)
feature3.uni <- unique(feature3)
feature1.val <- apply(outer(feature1,feature1.uni,"=="),1,which,TRUE)
feature2.val <- apply(outer(feature2,feature2.uni,"=="),1,which,TRUE)
feature3.val <- apply(outer(feature3,feature3.uni,"=="),1,which,TRUE)
infile.m <- infile.m[,4:length(infile.m[1,])]
unique.word <- unique(c(infile.m))
unique.word <- unique.word[which(unique.word != "")]
v.name <- unique.word
el.name <- el.id <- NULL
el.type <- NULL
for(i in 1:length(infile.m[,1])){
num.kids <- length(which(infile.m[i,] != ""))-1
for(j in 1:num.kids){
el.name <- rbind(el.name,c(infile.m[i,1],infile.m[i,1+j]))
el.type <- c(el.type,feature2.val[i])
}
}
el.id <- matrix(0,length(el.name[,1]),length(el.name[1,]))
for(i in 1:length(v.name)){
el.id[which(el.name == v.name[i])] <- i
}
library(igraph)
g <- graph.empty(length(v.name), directed =TRUE)
g <- add.edges(g, c(t(el.id)))
plot(g, layout = layout.kamada.kawai(g))
coords <- layout.kamada.kawai(g)
plot(g,layout = coords)
v.col <- rep(1,length(coords[,1]))
plot(coords,cex = 2, pch = 19, col = v.col)
e.col <- el.type
segments(coords[el.id[,1],1],coords[el.id[,1],2],coords[el.id[,2],1],coords[el.id[,2],2], col = e.col)
par(new =TRUE)
coords2 <- cbind(coords[,1],coords[,2]-0.1)
text(coords2,unique.word,xlim = range(coords[,1]),ylim=range(coords[,2]))