R折叠行报错cannot coerce class “formula” to a data.frame 如何解决
问题诊断与解决方案
代码错误原因
- 核心问题是没有正确调用
data.table的dcast宽表转换函数:你将dcast所需的公式参数、值列参数直接传入了data.frame()构造函数,data.frame()无法识别公式类对象,因此抛出类型转换错误。 - 转换公式书写错误:你需要按
name分组,把iter的取值作为列后缀的一部分,公式应该是name ~ iter,而非你写的iter ~ name。
正确实现代码
library(data.table) # 将原数据转为data.table格式 setDT(orig_data) # 执行宽表转换,指定分隔符直接生成要求的列名格式 dcast_data <- dcast(orig_data, name ~ iter, value.var = paste0("col", 1:4), sep = "_iter") # 补充示例输出中需要的iter列 dcast_data[, iter := unique(orig_data$iter)] # 如需转回普通data.frame格式可执行下面的语句 # dcast_data <- as.data.frame(dcast_data)
运行后输出的dcast_data结构和你要求的目标格式完全一致。
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

