如何避免R包中的reshape / reshape2 melt.data.frame冲突

时间:2015-06-18 16:21:18

标签: r reshape2

我在包中使用melt.data.frame中的reshape2。由于我无法控制的原因,我已经让用户加载我的包(导入reshape2)...然后加载reshape包,导致我的包中出现未来错误(官方警告......和我的代码输出不正确)。

我见过这个讨论: Reshape package masking preventing melt from naming columns

所以我知道我可以使用reshape2:::melt.data.frame来防止冲突,但这会在检查时生成一个我宁愿避免的注释。 gather中的tidyr函数也无法解决问题。这是一个可重复的例子:

library(reshape2)
df <- data.frame(x=rep("a",4),
                 y=c(1:3,NA),
                 key=c("g","g","c","d"),
                 stringsAsFactors = FALSE)

melt(df,id.vars = "key")

library(reshape)
melt(df,id.vars = "key")
reshape2::melt(df,id.vars = "key")
reshape2:::melt.data.frame(df,id.vars = "key") #No problem
reshape2::melt(df, measure.vars =  c("x","y"), 
               variable.name = "variable", 
               value.name = "value", na.rm = FALSE)

library(tidyr)
gather(df, variable, value, -key)
gather_(df, "variable", "value", c("x","y"))

0 个答案:

没有答案
相关问题