在我的一项作业中,要求我打印2015、2016、2017、2018年的债券价格。 因为2015,2016有252个交易日,2017有251个交易日,2018有250个交易日,我需要写一个if语句。 这是我的尝试:
plt <- function(a) {
if (a == 2015) {
x <- 1:252
}
else if (a == 2016) {
x <- 1:252
}
else if (a == 2017) {
x <- 1:251
} else {
x <- 1:250
}
plot(x=x, y=data[data$Year == a, 5], type="l", col="red")
}
但是,当我输入
function(c(2015, 2016, 2017, 2018))
仅显示2015年的草稿,R回报
Warning messages:
1: In if (a == 2015) { :
the condition has length > 1 and only the first element will be used
2: In data$Year == a :
longer object length is not a multiple of shorter object length
如果我分别输入这些年,它将给出四个完美的图。
答案 0 :(得分:0)
让我们假设您不是function(c(2015,2016,2017,2018)
,而是plt(c(2015,2016,2017,2018)
。如果我错了,我将删除答案。
让我们启动该功能。在这种情况下,a == c(2015, 2016, 2017, 2018)
。
在您要求的功能中,执行a == 2015
。不,不是的; a
是长度为4的向量,如上所示。 r中的2015是标量或长度为1的向量。
a == 2016
是吗?否,2017年和2018年也是如此。因此,如果满足条件,则所有条件都不成立,因此您的plot()
无法正常工作,因为从未创建x
。
相反,您可能想重写代码以使用a
并处理每个元素。
另外,您可能想通过创建来简化
a_length <- c(252, 252, 251, 205)
,而不是将所有内容都写出来。
此时,您可以使用for循环或lapply()
来获取绘图。