syou6162: かつどんさんはdata.frame変形しないで書いてください
黙って見ていたらハードルを上げられたので.
参考:
- http://blog.m884.jp/2009/11/30/for%e3%81%a8apply%e3%81%ae%e9%80%9f%e5%ba%a6%e6%af%94%e8%bc%83/
- Re:forとapplyの速度比較 - yasuhisa's blog
データ読み込み
## read.data d <- read.delim("clipboard") names(d)[1] <- "num" d[19,1] <- 100000
matplot使う
とりあえずmatplot使えば簡単にできる.名前の通りmatrix用のplotだし.
## matplot matplot(d[1], d[-1], type="l", xlab = "num", ylab = "time", lty = 1, log="x") legend("topleft", legend = names(d)[-1], lty = 1, col = 1:(length(names(d))-1), box.lty = 0 ) box()
ggplot2使う
data.frame変形しないとか無理です><
id:syou6162のはこんな感じですね.
## by syou6162 d2 <- data.frame(num = rep(d[,1], ncol(d)-1), time = as.numeric(as.matrix(d[,-1])), label = Reduce(c, sapply(names(d[,-1]), function(x){ rep(x, nrow(d))} ), c())) library(ggplot2) ggplot(d2, aes(x = num, y = time, group = label)) + geom_line(aes(colour = label)) + scale_x_log10()
ヤバイどうやって変形してるのかよくわかr(ry
で,探してみたらreshapeとかいう関数見つけた.これ使うと割と簡単に変形できるっぽい.
## by Rion778 d3 <- d names(d3) <- c("num", paste("l", names(d[-1]))) d3 <- reshape(d3, direction="long", varying = 2:7, sep=" ") names(d3) <- c("num", "label", "time", "id") ggplot(d3, aes(x = num, y = time, group = label)) + geom_line(aes(colour = label)) + scale_x_log10()
names()が規則的に付いてればそれを流用できるのでいいかも.
「いかにもExcel用」のデータシートをR用に加工するのもこれを使えば楽そう.