これを見たらすぐさまRができす。
# # はコメントアウトといって、入力しても無視されます # たいてい # の後ろに説明が入ります # 適当なデータを定義する a1 <- c(1, 2, 4.3, 1.2, 5, 3.2) # とりあえずプロットする plot(a1) # x軸の値を定義する x <- c(0, 10, 300, 1000, 3000, 10000) # とりあえず xy でプロット plot(x, a1) # x軸を対数軸でプロットする plot(x, a1, log="x") # データのばらつきをboxplotで見る summary(a1) boxplot(a1) # 検定する # 正規分布(norm)からランダム(r)にデータを作成する。 x1 <- rnorm(n=10, mean=0, sd=3) # 仮想データその1 x2 <- rnorm(n=10, mean=1, sd=5) # 仮想データその2 # 検定する前に # 生データを眺めて差がありそう? boxplot(x1, x2) # 使い方を調べる ?t.test res <- t.test(x1, x2, alternative="two.sided", paired=FALSE, var.equal=FALSE, conf.level=0.95) res # p値を取り出したい str(res) res$p.value # ANOVAを行う x3 <- rnorm(n=10, mean=0.5, sd=5) # 仮想データその3 boxplot(x1, x2, x3) # group指定というものを、引数formulaによって行う ( ~ のこと) res <- oneway.test(c(x1, x2, x3) ~ rep(1:3, each=10)) # 地味に全てをt検定したいと思ったら # for loop を回すことで行う # 3つデータがあれば、3C2 = 3 つのp値が出る cmb <- combn(3, 2, simplify=FALSE) # 3C2の重複のない組み合わせ p.value <- length(cmb) # p値を納めるところ names(p.value) <- mapply(function(x) paste(paste("x", x, sep=""), collapse=".vs."), cmb) # 名前付け X <- cbind(x1, x2, x3) # ベクトルを結合して行列化する。ベクトルの長さが合わないとダメ X for(i in seq(cmb)){ # i が 1, 2, 3 と順序よく変わる tmp.col <- cmb[[i]] # 比較される x? と x? tmp.data <- X[, tmp.col] # そのデータ tmp.result <- t.test(tmp.data) # 何も考えずt検定をしてみる p.value[i] <- tmp.result$p.value } # 多重検定補正をしろと言われたのですることにする p.adj <- p.adjust(p.value, "bonferroni") # xls ファイルの読み込み(推奨しない) library(gdata) read.xls("seika_sample.xlsx", header=TRUE) ### 以下コピペ ### data1,data2,data3 12,65,2 25,43,2 467,4,66 23,6,34 234,8,5 76,4,4 ### ここまで ### read.table("clipboard", header=TRUE, sep=",") install.packages("seqinr") library(seqinr) base <- c("A", "G", "C", "T") # 使用する塩基 seq1 <- sample(base, size=30, replace=TRUE) # ランダムな塩基配列を作成 table(seq1) # 各塩基の数をカウントする rev(seq1) # 逆配列 comp(seq1) # 相補配列 library(phangorn) phylip <- read.alignment(file = system.file("sequences/test.phylip", package = "seqinr"), format = "phylip") phyDat <- read.phyDat(file = system.file("sequences/test.phylip", package = "seqinr"), format = "phylip") tree0 <- NJ(dist.ml(phyDat)) plot(tree0) # 距離行列を求めて愚直にやる distmat <- diag(0, length(phylip$seq)) dimnames(distmat) <- list(phylip$nam, phylip$nam) seq2 <- lapply(phylip$seq, s2c) # ハミング距離によって距離を計算する # ハミング距離とは、塩基が違えば1の距離をつける cmb <- combn(5, 2, simplify=FALSE) # 5C2の重複のない組み合わせ for(i in seq(cmb)){ # i が 1, 2, 3 と順序よく変わる tmp.col <- cmb[[i]] # 比較される seq2[[?]] と seq2[[?]] tmp.seq1 <- seq2[[ tmp.col[1] ]] tmp.seq2 <- seq2[[ tmp.col[2] ]] humming <- tmp.seq1 != tmp.seq2 # 要素同士が等しいかは == , 等しくないかは != で比較できる distmat[ tmp.col[1], tmp.col[2] ] <- sum(humming) } d <- as.dist(t(distmat)) # 距離行列形式に変換 hcl <- hclust(d) # クラスタリング plot(hcl) # プロット