【发布时间】:2020-05-09 14:14:13
【问题描述】:
我正在尝试使用聚类分析来分析 iris 数据框。这里向我提供了一种在 R 中使用 Map 将数据映射到 expand.grid 列出的超参数组合集并将所有结果收集到一个表中的方法。
我现在想同时对数据框的修改版本执行此操作。比如:
acc <- function(x){
first = sum(x)
second = sum(x^2)
return(list(First=first,Second=second))
}
tests <- expand.grid(Clustering_Algorithm=c("ward.D","ward.D2","single","complete","average","mcquitty","median","centroid"),
DS=c("iris0","iris1","iris2"))
iris0 <- iris
iris1 <- cbind(log(iris[,1:4]),iris[5])
iris2 <- cbind(sqrt(iris[,1:4]),iris[5])
Table <- Map(function(x, ds){acc(table(ds$Species, cutree(hclust(dist(ds.[,1:4]),method=x),3)))},tests[[1]], tests[[2]])
这无法为我运行,并出现错误“ds$Species 中的错误:$ 运算符对原子向量无效”。我试过写as.character(tests[[2]]),但它有同样的错误信息。我什至尝试过ds %>% .[,"Species"]) 和ds %>% .[,1:4] 之类的选项,在这种情况下,我会收到不同的错误消息:“Error in .[, "Species"] : wrong number of dimensions"。
知道怎么解决吗?
编辑:
刚刚尝试在列表DS 上使用lapply,然后将上面的其余部分放入一个函数中,这给了我完全相同的错误消息。
【问题讨论】:
-
您正在调用
ds.,而它是ds,它也是一个字符串(转换为字符)
标签: r combinations apply