【问题标题】:Error in xy.coords(x, y, xlabel, ylabel, log): 'x' and 'y' lengths differxy.coords 中的错误(x,y,xlabel,ylabel,log):“x”和“y”长度不同
【发布时间】:2021-07-05 09:55:28
【问题描述】:

我刚开始使用 R。我需要在 2 到 20 个集群的数据上绘制由 K-means 聚类提供的集群方差。

这是我的代码:

w <- numeric(20)
for (k in 2:20) {
kf <- kmeans(whs2018annexBdatscl,k,nstart=100)
w[k] <- kf$tot.withinss
}
plot(2:20,w,type = "b", lwd= 2, pch= 19, xlab="K", ylab = expression(SS[within]))

我收到以下错误代码: xy.coords(x, y, xlabel, ylabel, log) 中的错误: “x”和“y”长度不同

当我从 1:20 开始绘制时,它起作用了,但我应该在 2:20 绘制。请问我做错了什么。

【问题讨论】:

  • 在你的情节中应该是1:20 而不是2:20。 w 中有 20 个元素,因此您的 x 轴应该有 20 个元素,因为第一步的总平方和和平方和内的总和是相同的。您从 2 开始循环,但 w 确实包含 1 次迭代平方和值。
  • 仅供参考,您最近有提问的习惯,我们无法重现它们。我们没有您的数据,不知道它的结构,因此必须进行推测。这导致了您长期未回答的问题。我强烈建议您调整提问的方式,使其独立且可重复;请参阅stackoverflow.com/q/5963269minimal reproducible examplestackoverflow.com/tags/r/info。谢谢,祝你好运。

标签: r


【解决方案1】:

您似乎从未分配给w[1],所以就这样做

plot(2:20, w[-1],
     type = "b", lwd= 2, pch= 19, xlab="K", ylab = expression(SS[within]))

错误的原因很简单:如果plot(1:2, 3:4) 绘制两个点,plot(c(1,2,3), c(4,5)) 应该绘制什么?向量必须具有相同的长度,这是 R 中的一个区域,它不会“回收”其参数(无论好坏)。

【讨论】:

  • 不着急,但当您确信问题已解决时,请记得回来accept the answer;这是常见的礼节,并且不仅仅是代表点的目的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-06-26
  • 1970-01-01
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-29
  • 2021-08-18
相关资源
最近更新 更多