You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的data.table中添加存储hclust类对象的列?

可以构建存储类对象的data.table列

你遇到的错误是因为hclust对象本质是带类属性的列表(包含7个元素),直接赋值时data.table会尝试将列表的每个元素拆分后对应到行,导致元素数量不匹配。要把整个hclust对象作为单个单元格的值,只需将其包装为单元素列表即可。

修正后的代码示例

方法1:赋值时用list()包裹对象

library(fastcluster)
library(data.table)
D <- dist(c(1,2,3,22,23))
C <- hclust(D, method="average")
dtTrials <- data.table(Idx=1L)
# 关键:用list(C)代替C
dtTrials[Idx==1, Clust:=list(C)]

方法2:先创建空列表列再赋值

# 初始化时直接创建列表类型的列
dtTrials <- data.table(Idx=1L, Clust=vector("list", 1))
dtTrials[Idx==1, Clust[[1]] := C]

验证结果

查看列中对象的类型:

class(dtTrials$Clust[[1]])
# [1] "hclust"

此时dtTrials的结构就符合你的预期:每行的Clust单元格存储一个完整的hclust类对象,后续可以继续添加更多行的对象,比如:

# 添加第二个hclust对象
D2 <- dist(c(4,5,6,24,25))
C2 <- hclust(D2, method="average")
dtTrials <- rbind(dtTrials, data.table(Idx=2L, Clust=list(C2)))

内容的提问来源于stack exchange,提问作者C8H10N4O2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 15:00:01