我正在尝试做一个简单的reshape,使test看起来像这样:

a_estimate, a_tstat, b_estimate, b_tstat
1,          3,       2,          4

这是我尝试的代码:
require(reshape2)
test = data.frame(cf=c("a", "b"), estimate=c(1,2), tstat=c(3,4))
m = melt(test, id.vars="cf")
d = dcast(m, formula = . ~ cf + variable)
Error: nrow(res$labels[[1]]) == nrow(data) is not TRUE

这里发生了什么?
> sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
 [7] LC_PAPER=C                 LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
 [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
 [1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
 [1] reshape2_1.2.2

loaded via a namespace (and not attached):
 [1] plyr_1.8      stringr_0.6.2

最佳答案

也许您的问题是您实际上只剩下零个“行”变量(即,您完全不希望在转换公式的LHS上有任何东西)。此解决方法(添加虚拟变量)可能有帮助?

d = dcast(cbind(x=1,m), formula = x ~ cf + variable)

关于r - 使用reshape2在R中进行简单的重塑会导致错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16655489/

10-12 17:31