如何使用R中在Excel中创建的代码进行循环?

问题描述

我正在尝试使用我在Excel中创建的代码在R中循环。 我正在尝试从Yahoo Finance收集股票数据,其想法是R将从Excel文件中读取股票名称,然后从Yahoo Finance收集股票名称并创建图表。

在“股票”数据框中,不同列中列出了10种不同的股票,我想运行一个循环,以便获得10种不同的图形。这是我用来根据数据集中的第一个股票创建图形的公式。

 `Stocks %>%
ggplot(aes(x=Date,y = NOVO.B.CO.Close)) + 
geom_line(col = "darkgreen") + 
geom_point(col = "darkgreen") +
theme_gray() + 
ggtitle("Novo nordiske B") `

解决方法

将我的评论包装成正确的答案。不清楚是要使它成为单个图(使用facet_wrap)还是要将多个图组合到一个窗口中。使用ggplot2时,最好在long format中使用一个data.frame,因为这样一来,ggplot可以根据类似于以下内容的分组列来处理所有着色和分组下面的例子

library(ggplot2)
data(mtcars)
ggplot(mtcars,aes(x = mpg,y = hp,col = factor(cyl))) + 
  geom_point() + 
  geom_smooth() + 
  labs(col = 'Nmb. Cylinder') 

该指南从此处给出每种颜色的名称,scale_*_(manual/discrete/continuous)可用于更改特定的调色板(例如,scale_colour_discrete可用于更改因子的调色板)。

在组合ggplots时,patchwork软件包提供了简单的界面。如果我们假设您分别有一个向量tickerstitlescolors,我们可以创建一个绘图列表,并使用简单的加法运算(+)组合它们。

library(purrr)
plots <- vector('list',n <- length(tickers))
base <- ggplot(Stocks,aes(x = Date)) + 
  theme_gray() 
for(i in seq_len(n)){
  plots[[i]] <- base + 
    geom_point(aes_string(y = tickers[i]),col = colors[i]) 
    geom_line(aes_string(y = tickers[i]),col = colors[i]) 
    ggtitle(titles[i])
}
reduce(plots,`+`)

但是对于股票而言,第一种选择可能会带来更好的结果。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...