Ошибка в as.vector(x, mode): невозможно привести тип 'closure' к вектору типа 'any'
Я делаю некоторую практику на упаковке метлы в 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'
Мне было интересно, что-то упущено в моей строке.
Надеюсь, ты сможешь мне помочь.
Juan
1 ответ
Вопрос, казалось, был решен в комментариях, но я подумал, что обобщу его, потому что получил очень похожую ошибку.
Причина, по которой вы получаете эту ошибку, может быть найдена следующим образом:
> typeof(data.frame)
[1] "closure"
Вы фактически передаете функцию, которую используете для создания фреймов данных вместо фрейма данных.
В виньетке для метлы есть способ сделать код, подобный следующему:
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))