-5

我正在尝试从 alr3 包中绘制钞票数据框。我的 pair 函数抛出错误并且在执行时没有给我正确的绘图。有人可以告诉我这里出了什么问题吗?谢谢。

基本上我正在尝试编写代码以从“alr3”包中存在的“钞票”数据框中找出所有假钞。

代码:-

pairs(banknote[,-1],panel=
function(x,y,fake){
xy <- cbind(x,y)
points(xy[fake==0,],pch=15)
points(xy[fake==1,],pch=0)
}, fake=Y)

错误:-

Error in points(xy[fake == 0, ], pch = 15) : 
  (subscript) logical subscript too long
In addition: Warning messages:
1: In plot.window(...) : "fake" is not a graphical parameter
2: In plot.xy(xy, type, ...) : "fake" is not a graphical parameter
3: In title(...) : "fake" is not a graphical parameter
4: In plot.window(...) : "fake" is not a graphical parameter
5: In plot.xy(xy, type, ...) : "fake" is not a graphical parameter
6: In title(...) : "fake" is not a graphical parameter
7: In axis(side = side, at = at, labels = labels, ...) :
  "fake" is not a graphical parameter
4

2 回答 2

2

错误:显然length(fake) > nrow(xy)是在评估完成时。

警告:您的 'fake=Y' 参数在花括号之外,因此它被解释为传递给对的参数。我无法告诉您您期望它做什么,并且您没有显示工作区中可能存在的数据,所以... ???

于 2012-09-21T01:34:06.810 回答
2

呼应@DWin,目前尚不清楚是什么Y,因为它将尝试Y从您的工作区中获取。

如果您的意思是按内pch的列设置,那么以下将起作用Ybanknote

pairs(banknote[,-c(1,7)], 
  panel = function(x,y,...){
    points(x,y,pch = ifelse(as.logical(banknote$Y), 0,15))})

在此处输入图像描述

如果您不想引用data.frameand 列,$那么您可以将所有内容包装在一个with(banknote, ...)语句中,然后Rbanknote首先在其中查找变量

所以以下将起作用

with(banknote, pairs(list(Left = Left, Right = Right, Bottom = Bottom, 
        Top = Top, Diagonal = Diagonal), 
      panel = function(x,y) points(x,y, pch= ifelse(as.logical(Y),0,15))) 
于 2012-09-21T01:37:40.117 回答