我有两个数据框。将相同的dcast()函数应用于这两个函数会使我在输出中得到不同的结果。这两个数据集具有相同的结构,但大小不同。第一个有超过950行:
我应用的代码是:
trans_matrix_complete <- mod_attrib$transition_matrix
trans_matrix_complete[which(trans_matrix_complete$channel_from=="_3RDLIVE"),]
trans_matrix_complete <- rbind(trans_matrix_complete, df_dummy)
trans_matrix_complete$channel_to <- factor(trans_matrix_complete$channel_to,
levels = c(levels(trans_matrix_complete$channel_to)))
trans_matrix_complete <- dcast(trans_matrix_complete,
channel_from ~ channel_to,value.var = 'transition_probability')
我得到的trans_matrix_complete输出如下:
有些事情无法正常工作,就像只有几行的较小数据框一样,我得到以下结果:
哪里
a)行号不同。我不确定为什么在第一种情况下会列出两个点
b)也是,尝试通过以下方式将行名分配给数据框
row.names(trans_matrix_complete) <- trans_matrix_complete$channel_from
不适用于大型数据框,尽管row.name与数据框的联系与第一个图像中显示的完全一样,没有为行分配名称。
关于这种奇怪行为的任何想法吗?
答案 0 :(得分:0)
我解决了使用以下功能从tidyverse的dcast()迁移到spread()的问题:
trans_matrix_complete <-spread(trans_matrix_complete, channel_to,transition_probability)
通过对两个数据帧应用spread(),矩阵输出具有相同的格式,并且可以毫无问题地接受行名。
所以我怀疑这完全是因为不再维护dcast()和reshape2软件包
致谢