reshape ::使用data.frame中的字符融化意外行为

时间:2012-12-12 19:45:10

标签: r dataframe reshape

我回到了上个月写的一些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

1 个答案:

答案 0 :(得分:2)

reshape和reshape2版本的文档说:

  

如果两者都不提供,则熔化将假设因子和字符变量是id变量,而所有其他变量都是测量的。

所以melt的行为与记录一致。