Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
澄清R中的plot命令_R_Plot_Svm - Fatal编程技术网

澄清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

我将按照教程在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 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