我正在尝试在同一页面上绘制多个图形。当我像这样一一编写代码时,它可以正常工作:
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.omit
。
这是datafram 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
您不需要xts
持久地创建对象。还要注意规范中对names()
功能用法的修改for()
:
for (i in names(log_return)[2:11]){
plot(na.omit(xts(log_return[[i]],log_return$Date)), xlab = "Date", ylab = "log_return", main = i)
}
或者,正如@SpacedMan所提到的,get()
如果您确实希望将xts
对象存储在内存中,也可以在此处通过名称来引用变量:
for (i in names(log_return)[2:11]){
plot(na.omit(get(i)), xlab = "Date", ylab = "log_return", main = i)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句