r - 在 R 中创建显示多个行业的异常回报发展的 geom_table 时出错
问题描述
所需的图表,但在 R你好,我在 R 中很新,我在尝试创建 ggpolt geom_line 以可视化所选 5 家公司的异常回报的发展时遇到问题。但我收到一条错误消息,说“is.list(x) 中的错误:维数不正确”,我不明白。
谁能帮我理解这个错误,我该如何解决?
到目前为止我所做的是:
绘制金融行业的所有行
df <- read.table(text="AR-5 AR-4 AR-3 AR-2 AR-1 AR0 AR1 AR2 AR3 AR4 AR5 AR6 AR7 AR8 AR9 AR10
+ -0,0069 0,0157 0,0175 -0,0087 -0,0108 -0,0038 -0,0136 -0,0077 0,0135 -0,0024 -0,0190 0,0119 0,0100 0,0041 0,0044 -0,0287
+ -0,0008 0,0012 -0,0088 0,0032 -0,0017 0,0088 -0,1461 -0,0968 0,0208 -0,1597 -0,0234 -0,0413 0,0128 0,0034 0,0105 0,0254
+ -0,0032 0,0128 0,0029 0,0014 0,0010 -0,0059 -0,0074 -0,0855 0,0001 -0,0011 0,0111 0,0045 0,0002 0,0024 -0,0146 0,0007
+ -0,0637 -0,0043 0,0003 0,0208 -0,0246 -0,0890 -0,0630 -0,0534 -0,0071 0,0239 -0,0151 0,0054 -0,0083 0,0078 0,0327 -0,0541
+ -0,0054 -0,0029 -0,0007 0,0019 0,0077 -0,0088 0,0119 0,0000 0,0025 -0,0009 0,0021 0,0039 0,0131 -0,0046 -0,0338 -0,0081", header = T)
df <- melt(df)
df$company <- 1:5
head(df, 11)
ggplot(df, aes(x=df$company[1:16, 0], y=df$company)[1:16, 1:5], group=factor(company)) +
+geom_line(aes(color=factor(company)
))
Error in is.list(x) : incorrect number of dimensions
y轴应该是数值,r轴只是每天异常收益的标题,即AR-2、AR-1、AR0、AR1
解决方案
逗号用作小数点,因此将在 read.table 调用中包含 dec=',' (否则将值视为因素):
df <- read.table(text="AR-5 AR-4 AR-3 AR-2 AR-1 AR0 AR1 AR2 AR3 AR4 AR5 AR6 AR7 AR8 AR9 AR10
-0,0069 0,0157 0,0175 -0,0087 -0,0108 -0,0038 -0,0136 -0,0077 0,0135 -0,0024 -0,0190 0,0119 0,0100 0,0041 0,0044 -0,0287
-0,0008 0,0012 -0,0088 0,0032 -0,0017 0,0088 -0,1461 -0,0968 0,0208 -0,1597 -0,0234 -0,0413 0,0128 0,0034 0,0105 0,0254
-0,0032 0,0128 0,0029 0,0014 0,0010 -0,0059 -0,0074 -0,0855 0,0001 -0,0011 0,0111 0,0045 0,0002 0,0024 -0,0146 0,0007
-0,0637 -0,0043 0,0003 0,0208 -0,0246 -0,0890 -0,0630 -0,0534 -0,0071 0,0239 -0,0151 0,0054 -0,0083 0,0078 0,0327 -0,0541
-0,0054 -0,0029 -0,0007 0,0019 0,0077 -0,0088 0,0119 0,0000 0,0025 -0,0009 0,0021 0,0039 0,0131 -0,0046 -0,0338 -0,0081", header = T, dec = ',')
然后,如果您将公司作为因素 1 到 5 包括在内,您可以使用您的熔体来使数据变长:
df$company <- as.factor(1:5)
df.melt <- melt(df, id = "company")
> head(df.melt, 10)
company variable value
1 1 AR.5 -0.0069
2 2 AR.5 -0.0008
3 3 AR.5 -0.0032
4 4 AR.5 -0.0637
5 5 AR.5 -0.0054
6 1 AR.4 0.0157
7 2 AR.4 0.0012
8 3 AR.4 0.0128
9 4 AR.4 -0.0043
10 5 AR.4 -0.0029
然后使用ggplot。注意:不需要像以前那样在 aes() 中再次包含 df 。
ggplot(df.melt, aes(x = variable, y = value, group = company)) +
geom_line(aes(color=company))