我正在读取一些结果文件中的参数估计值,我想在表格中并排比较。但是我无法将数据帧添加到我想要的结构中(参数名称,值(文件1),值(文件2))
当我读入文件时,我得到一个宽的数据框,每个参数都在一个单独的列中,我想使用melt转换为“long”格式。但是这只给出了一列值。关于如何在不使用for循环的情况下获取多个值列的任何想法?
paraA <- c(1,2)
paraB <- c(6,8)
paraC <- c(11,9)
Source <- c("File1","File2")
parameters <- data.frame(paraA,paraB,paraC,Source)
wrong_table <- melt(parameters, by="Source")
答案 0 :(得分:2)
您可以将melt
与cast
结合使用,以获得您想要的效果。这实际上是预期的使用模式,这就是函数具有它们的名称的原因:
m<-melt(parameters)
dcast(m,variable~Source)
# variable File1 File2
# 1 paraA 1 2
# 2 paraB 6 8
# 3 paraC 11 9
答案 1 :(得分:2)
将@ alexis的评论转换为答案,转置(t()
)几乎可以满足您的需求:
setNames(data.frame(t(parameters[1:3])), parameters[, "Source"])
# File1 File2
# paraA 1 2
# paraB 6 8
# paraC 11 9
我已使用上面的setNames
方便地在一步中重命名结果data.frame
。