R编程:在apply()函数和kmeans()函数中获取错误

时间:2018-03-29 06:26:32

标签: r statistics market-basket-analysis

我正在用R进行市场篮子分析,这样做我正在为Elbow方法计算WSS,然后使用kmeans()函数。 我使用了一个标准化数据帧pc1然后我们计算了PCA,然后在代码中我们有以下命令: -

pc1 <- princomp(na.omit(pc1))
plot(pc1)
loadings(pc1)
pc.df <- data.frame(pc1$x[,1:3])
names(pc.df)
wss <- (nrow(pc.df)-1)*sum(apply(pc.df,2,var))
for (i in 2:15) wss[i] <- sum(kmeans(pc.df, nstart = 100 , iter.max = 1000,
                                 centers=i)$withinss)

然后在运行时,我在apply()函数的代码的第6行出现以下错误: -

  

get中的错误(as.character(FUN),mode =“function”,envir = envir):
  没有找到''功能'模式的对象'2013-12-09'

在下一行我得到: -

Error in kmeans(pc.df, nstart = 100, iter.max = 1000, centers = i) :
more cluster centers than distinct data points.

第二个错误显然是由于群集的数量大于不同的点,但它是否必须对先前的错误做些什么?

任何形式的帮助都将受到高度赞赏。此外,如果有人知道一个好的网站或链接的PDF格式,以了解PCA和肘部测试(在市场篮子的例子)也将有所帮助。

1 个答案:

答案 0 :(得分:1)

我遇到了这个问题。 有一个名为&#34; var&#34;的变量。在变量列表中存在,同时我们在apply()中使用var函数。这就是出现以下错误的原因: -

val justGreater = rdd.filter(row => row.get[String]("dttime") > gpsdt).sortBy(row => row.get[String]("dttime")).take(1)
val justLess = rdd.filter(row => row.get[String]("dttime") < gpsdt).sortBy(row => row.get[String]("dttime"), false).take(1)
justGreater.union(justLess)

变量&#34; var&#34; 的分配值为 2013-12-09