Использование функции reshape
:
reshape(dat1, idvar = "name", timevar = "numbers", direction = "wide")
Как говорили другие ответы, оберните каждый вызов qplot()
в print()
(это R FAQ 7.22 ). Причина в том, что ggplot не печатаются на графическом устройстве до тех пор, пока на них не вызывается print.ggplot
. print()
- это общая функция, которая отправляется в print.ggplot
за кулисами.
Когда вы работаете в repl («read-оцените-print loop», aka shell), возвращаемое значение предыдущей строки ввода автоматически печатается с помощью неявного вызова print()
. Вот почему qplot(mtcars[,Var], wt, data=mtcars, xlab=Var)
работает на вас. Это не связано с областью действия или циклом for. Если бы вы отправили эту строку в другое место, которое не возвращается непосредственно к реплику, например, в функции, которая возвращает что-то еще, она ничего не сделает.
Недавно я сделал что-то подобное, и подумал, что я бы назвал два дополнительных бита кода, которые помогли. Я включил эту строку в цикл for, чтобы сделать паузу R на мгновение (в данном случае через полсекунды) после печати каждого графика:
Sys.sleep(0.5)
В качестве альтернативы вместо просмотра графиков на экране , вы можете сохранить их непосредственно в файлы, а затем просматривать их на досуге. Или, в моем случае, я пытался оживить траекторию пчелы, которую мы отслеживали, поэтому я импортировал последовательность изображений в ImageJ и сохранил ее как анимированный gif.
library(ggplot2)
png(file="cars%d.png")
for(Var in names(mtcars)) {
print(qplot(mtcars[,Var], wt, data=mtcars, xlab=Var))
}
dev.off()
Добавить print
:
library(ggplot2)
par(ask=TRUE)
for(Var in names(mtcars)) {
print(qplot(mtcars[,Var], wt, data=mtcars, xlab=Var))
}
Для объяснения см. ответ Тависа Радда.