我正在编写一个家庭作业问题,要求我编写一个函数,根据输入数据绘制不同类型的图表 .
该函数的参数是 x , y 和 type ,其中 x
和 y
是我想要绘制的矢量, type
是绘图的类型(散点图,方框或直方图) .
需要编写该函数,以便在没有为类型为scatterplot的 x
指定数据时,会收到一条错误消息,指出您需要x数据来制作散点图 .
同样,如果您使用直方图或boxplot类型为 x
指定数据,则会收到一条错误消息,指出您只需要这些绘图类型的y数据 .
我有一个函数编写,生成正确的图形和错误消息,但也给了我一个 warning message :
In if (y == FALSE & type == 1) { :
the condition has length > 1 and only the first element will be used
功能如下 . 有人能告诉我为什么我会收到这个特别的警告吗?
plot.function2=function(x=FALSE,y=FALSE,type){
if(x==FALSE & type==1){
stop("Error Message 1")
}else if (y==FALSE & type==1){
stop("Error Message 1.5")
}else if(type==1){
plot=plot(y~x)
}else if (x==TRUE & type==2){
stop("Error Message 2")
}else if(type==2){
plot=boxplot(y)
}else if(type==3){
plot=barplot(y)
}
plot
}
该消息显示大多数输入;例如,输入 plot.function2(v1, v2, 1)
会得到两个向量的散点图, but also 警告消息 . 谢谢!
1 回答
您正在使用函数将向量与布尔值进行比较 .
例如,请参阅虹膜数据集中的矢量
您应该使用
NULL
和is.null
来查看对象是否为空根据建议,可以使用
switch
语句进行清理,如您所见 .