澄清R中的plot命令
我将按照教程在R中实现支持向量机 我很难弄清楚plot命令的工作原理澄清R中的plot命令,r,plot,svm,R,Plot,Svm,我将按照教程在R中实现支持向量机 我很难弄清楚plot命令的工作原理 plot(x,col=ifelse(y>0,1,2)) 当长度(x)确认时,x的大小为300,但长度(如果其他(y>0,1,2)显示为150 如果有300个x值,但只有150个y值,那么绘图是如何工作的 当我试着 绘图(x,ifelse(y>0,1,2))它显示了预期的错误ie Error in xy.coords(x, y, xlabel, ylabel, log) : 'x' and 'y' lengths
plot(x,col=ifelse(y>0,1,2))
当长度(x)
确认时,x的大小为300,但长度(如果其他(y>0,1,2)
显示为150
如果有300个x值,但只有150个y值,那么绘图是如何工作的
当我试着
绘图(x,ifelse(y>0,1,2))
它显示了预期的错误ie
Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' and 'y' lengths differ
什么是使它工作的
col=ifelse(y>0,1,2)
呢?一般来说,R知道循环利用,即在许多情况下,R如果向量没有所需的长度,则循环利用向量,例如
1:4 + 1:2
向量1:2
被循环使用,因此有效地变成c(1,2,1,2)
来拟合另一个向量的长度。现在,我们可以求向量的和
c(1,2,3,4) + c(1,2,1,2)
在您的示例中,
col
参数也会发生同样的情况。向量col
被循环使用,因此它适合x
的长度,但正如您所看到的,并非所有参数值都会自动循环使用。在plot
中的x
和y
参数的情况下情况并非如此。如果这两个向量的长度不匹配,这可能是一个错误。请确保length(y)
等于length(x)
。某些y坐标似乎丢失,因此会出现错误。当ifelse(y>0,1,2)
被提供给col
它被循环使用以适应x
的长度。因此,只有当向量存储在像col这样的变量中时,它才起作用?如果我们直接使用ifelse
的输出,它不会循环使用?不,这没有什么区别。尝试绘图(1:4,col=1:2);col我读了你的编辑,明白了,但仍然不明白为什么后一种情况可能是错误的,但如果将其存储在col
中,则不是错误的。@wrahool如果你不命名参数,那么重要的是它们的顺序:plot
的第二个参数通常是y=
所以你的调用plot(x,if else(…)
被解释为如果ifelse(…)
是您建议的y
,而不是col
col
可以回收,但不是y
。