Re:Re:forとapplyの速度比較

syou6162: かつどんさんはdata.frame変形しないで書いてください

黙って見ていたらハードルを上げられたので.
参考:

データ読み込み

## 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用に加工するのもこれを使えば楽そう.