【发布时间】:2015-08-29 11:21:45
【问题描述】:
我正在尝试在同一页面上绘制多个图表。当我像这样一一编写代码时,它工作正常:
old.par <- par(mfrow = c(3,4))
plot(na.omit(AUS.Yield), xlab = "Date", ylab = "log_return", main = "AUS.Yield")
plot(na.omit(BRA.Yield), xlab = "Date", ylab = "log_return", main = "BRA.Yield")
plot(na.omit(CAN.Yield), xlab = "Date", ylab = "log_return", main = "CAN.Yield")
plot(na.omit(CHI.Yield), xlab = "Date", ylab = "log_return", main = "CHI.Yield")
plot(na.omit(GER.Yield), xlab = "Date", ylab = "log_return", main = "GER.Yield")
plot(na.omit(JAP.Yield), xlab = "Date", ylab = "log_return", main = "JAP.Yield")
plot(na.omit(SOA.Yield), xlab = "Date", ylab = "log_return", main = "SOA.Yield")
plot(na.omit(SWI.Yield), xlab = "Date", ylab = "log_return", main = "SWI.Yield")
plot(na.omit(UK.Yield), xlab = "Date", ylab = "log_return", main = "UK.Yield")
plot(na.omit(US.Yield), xlab = "Date", ylab = "log_return", main = "US.Yield")
但是当我尝试使用 for 循环时它不起作用,例如:
## names(log_return[2:11]) will give me all those AUS.Yield, BRA.Yield etc as they are the column names of dataframe log_return
for (i in names(log_return[2:11]){
plot(na.omit(i), xlab = "Date", ylab = "log_return", main = "i")
}
另外,我使用以下方法生成了 10 个时间序列:
for (i in 2:length(log_return)){
assign(names(log_return[i]),xts(log_return[i],log_return$Date))
}
所以我得到了 10 个时间序列的名称:AUS.Yield、BRA.Yield.... 等等。
只是想知道哪里出错了...... 这是错误消息:
Error in plot.window(...) : need finite 'ylim' values
我在想也许我的数据框中有这么多 NA?但我已经使用了na.omit。
这是数据帧 log_retrun 的一小部分;
Date AUS.Yield BRA.Yield CAN.Yield CHI.Yield GER.Yield JAP.Yield
1 2008-01-01 NA NA NA NA NA NA
2 2008-01-02 NA NA NA NA NA NA
3 2008-01-03 -0.033047602 -0.01239795 0.003828977 -0.017857617 -0.031966192 NA
4 2008-01-04 -0.003922215 0.00198792 -0.008443187 0.006734032 -0.006984895 NA
5 2008-01-05 NA NA NA NA NA NA
6 2008-01-06 NA NA NA NA NA NA
JAP.Yield 可能看起来都是 NA,但在几行之后会有值。
提前感谢您的任何帮助和建议! T_T
【问题讨论】: