【问题标题】:Error in as.vector(x, mode) : cannot coerce type 'closure' to vector of type 'any'as.vector(x, mode) 中的错误:无法将“闭包”类型强制转换为“任何”类型的向量
【发布时间】:2017-09-08 09:58:26
【问题描述】:

我正在R中做一些关于扫帚包的练习。

我跑了以下

kclusts <- data.frame(k=1:9) %>% group_by(k) %>% do(fit=kmeans(data.frame, .$k))

我收到以下错误

Error in as.vector(x, mode) : cannot coerce type 'closure' to vector of type 'any'

我想知道我的字符串中是否缺少某些内容。

希望你能帮帮我。

胡安

【问题讨论】:

  • 每组只有一个元素。另外,kmean(data.frame, 中的data.frame是什么
  • @Juanma 您需要定义kmeans 的第一个参数,它不能简单地是data.frame,因为@akrun 已经在上面建议了(请参阅here 了解更多详细信息)跨度>
  • 是的,非常感谢你们俩。我刚刚又查了一下,是对的
  • 请随时添加它作为答案。很高兴之后标记它。

标签: r broom


【解决方案1】:

这个问题似乎在 cmets 中得到了解决,但我想我会概括它,因为我遇到了一个非常相似的错误。

可以通过以下方式找到您收到该错误的原因:

> typeof(data.frame)
[1] "closure"

您实际上是在传递用于创建数据框的函数,而不是数据框。

vignette for broom 有办法让这样的代码工作:

library(dplyr)

set.seed(2014)
centers <- data.frame(cluster=factor(1:3), size=c(100, 150, 50), x1=c(5, 0, -3), x2=c(-1, 1, -2))
points <- centers %>% group_by(cluster) %>%
    do(data.frame(x1=rnorm(.$size[1], .$x1[1]),
                  x2=rnorm(.$size[1], .$x2[1])))

library(ggplot2)
ggplot(points, aes(x1, x2, color=cluster)) + geom_point()

points.matrix <- cbind(x1 = points$x1, x2 = points$x2)

# Notice points.matrix defined above
kclusts <- data.frame(k=1:9) %>% group_by(k) %>% do(kclust=kmeans(points.matrix, .$k))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 2016-11-21
    相关资源
    最近更新 更多