我回到了上个月写的一些R代码,但似乎我使用的reshape版本(0.8.4,R 2.15.2)改变了这个功能。
以下是一个示例:
> library(reshape)
> so.test <- data.frame(
one = as.character(rnorm(750)),
two = as.character(rnorm(750)),
three = as.character(rnorm(750)), four = as.character(rnorm(750)))
> check <- melt(so.test)
Using one, two, three, four as id variables
这使得data.frame等于原始:
> table(so.test == check)
TRUE
3000
我也尝试过reshape2 :: melt,但是得到的结果相同。有趣的是,melt()
函数按预期使用带有数值的data.frame:
> so.test2 <- data.frame(
one = rnorm(750),
two = rnorm(750),
three = rnorm(750), four = rnorm(750))
> check2 <- melt(so.test2)
Using as id variables
> head(check2)
variable value
1 one 0.2471168
2 one -0.0663480
3 one -0.0251867
4 one 2.8786207
5 one -0.2586785
6 one -0.7508927
答案 0 :(得分:2)
reshape和reshape2版本的文档说:
如果两者都不提供,则熔化将假设因子和字符变量是id变量,而所有其他变量都是测量的。
所以melt
的行为与记录一致。