melt, не as.data.frame или rbind в R (базовый ggplot) - PullRequest
0 голосов
/ 21 мая 2011

У меня есть несколько равных по длине векторов чисел, как

alpha <- c(1, 2, 3, 4)
beta <- c(5, 6, 7, 8)
gamma <- c(9, 10, 11, 12)

и я хочу поместить их во фрейм данных или что-то подобное со столбцами, обозначенными альфа, бета и гамма. Как

alpha | beta | gamma
1 | 5 | 9
2 | 6 | 10
3 | 7 | 11
4 | 8 | 12

, который qplot должен уметь читать и выделять colour = labels. cbind и rbind приводят к матрице, которую qplot не может прочитать. И c выстраивает альфа-бета и гамму, не помечая их как отдельные.

В наборе данных diamonds отображается то, что мне нужно, с помощью qplot(carat, price, data = diamonds, colour = color), за исключением того, что я хочу построить свои данные с общими измерениями для индекса, подобного x=1:4.

В обычном R я бы сделал plot(alpha); points(beta); points(gamma).

Извините, что задали такой простой вопрос.

1 Ответ

3 голосов
/ 21 мая 2011

Если вам нужен data.frame, то data.frame сделает это:

> data.frame(alpha, beta, gamma)
  alpha beta gamma
1     1    5     9
2     2    6    10
3     3    7    11
4     4    8    12

И это можно передать qplot или ggplot.

В случае qplot вам не нужно создавать data.frame. Достаточно просто вызвать переменные так:

qplot(alpha, beta, colour=gamma)

И обновляется после комментария.

Я все еще не уверен, что нужно, но этот пример может помочь:

> d <- data.frame(x=1:4, alpha, beta, gamma)
> d
  x alpha beta gamma
1 1     1    5     9
2 2     2    6    10
3 3     3    7    11
4 4     4    8    12

> d2 <- melt(d, id="x")
> d2
   x variable value
1  1    alpha     1
2  2    alpha     2
... snip ...
11 3    gamma    11
12 4    gamma    12

> qplot(d2$x, d2$value, colour=d2$variable, geom="line")

# same as

> ggplot(d2, aes(x, value, colour=variable)) + geom_line()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...