R 在重塑2中使用melt()时尺寸不匹配

R 在重塑2中使用melt()时尺寸不匹配,r,dataframe,reshape,reshape2,melt,R,Dataframe,Reshape,Reshape2,Melt,我正在尝试使用包'Reforme2'中的函数'melt'将R中的数据帧从'wide'格式转换为'long'格式。然而,当我试图查看输出数据帧时,我遇到了一个维度方面的问题,我在解码时遇到了困难。以下是一个例子: # load reshape2 package require(reshape2) # sample data frame generated using dput df <- structure(list(year = c(2001, 2002, 2003, 2004),

我正在尝试使用包'Reforme2'中的函数'melt'将R中的数据帧从'wide'格式转换为'long'格式。然而,当我试图查看输出数据帧时,我遇到了一个维度方面的问题,我在解码时遇到了困难。以下是一个例子:

# load reshape2 package
require(reshape2)

# sample data frame generated using dput
df <- structure(list(year = c(2001, 2002, 2003, 2004), 
                     aet = structure(c(493.1, 407.1, 476.7, 501.6), .Dim = 4L), 
                     drainage = structure(c(5.4, 5.4, 5.4, 5.4), .Dim = 4L), 
                     srunoff = structure(c(25.6, 24.3, 56.0, 50.3), .Dim = 4L)),
                .Names = c("year", "aet", "drainage", "srunoff"), row.names = c(NA, 4L), class = "data.frame")

# if i melt without specifying id.vars, it provides a warning but works works fine
df.melt <- melt(df)

# check output
head(df.melt)

# view output
View(df.melt)
# this works fine, and the data frame is visible in RStudio

# now, melt while supplying year as an id variable
df.melt.id <- melt(df, id.vars="year")

# check output
head(df.melt.id)
# the first 6 lines of output print to the console menu, as normal

# view output
View(df.melt.id)
4表示数据帧的原始长度,12表示数据帧的长度。如果我使用
dim(df.melt.id)
检查尺寸,它将返回适当的尺寸:
[1]12 3


你知道这里发生了什么吗?我已尝试重新安装Reformae2,但没有任何帮助…

当您执行此操作时,它与
Reformae2
一起工作:

df.melt.id <- as.data.frame.array(melt(df, id="year"))

df.melt.id如果您查看
str(df.melt.id)
,不知何故,
value
列变成了一个数组。如果您强制它为数值,这很好,但行为似乎有问题<代码>重塑::melt.data.frame
工作正常。奇怪!是的,使用
重塑
可以很好地处理此示例和我原来较大的数据帧。谢谢你的快速帮助。你也应该。试试我的答案:P
df.melt.id <- as.data.frame.array(melt(df, id="year"))