我不知道 为什么 部分,但我确实知道您可以通过 melt
a matrix
代替 data.frame
:
melt(as.matrix(dat))
# Var1 Var2 value
# 1 Cubn FOO 3.7145516
# 2 Gm9779 FOO 2.5605166
# 3 Apod FOO 3.5179670
# 4 Cubn BAR 0.2374546
# 5 Gm9779 BAR 0.2085075
# 6 Apod BAR 0.1959992
您必须查看到达的代码 melt
函数知道为什么它是这种行为。特别是 reshape2:::melt.matrix
具有以下行,将在上面的示例中创建前两列:
labels <- expand.grid(lapply(dn, var.convert), KEEP.OUT.ATTRS = FALSE,
stringsAsFactors = FALSE)