我将 tidyr 与闪亮一起使用,因此需要在 tidyr 操作中利用动态值。
然而,我在使用 Gather_() 时遇到了麻烦,我认为它是为这种情况设计的。
下面的最小示例:
library(tidyr)
df <- data.frame(name=letters[1:5],v1=1:5,v2=10:14,v3=7:11,stringsAsFactors=FALSE)
#works fine
df %>% gather(Measure,Qty,v1:v3)
dyn_1 <- 'Measure'
dyn_2 <- 'Qty'
dyn_err <- 'v1:v3'
dyn_err_1 <- 'v1'
dyn_err_2 <- 'v2'
#error
df %>% gather_(dyn_1,dyn_2,dyn_err)
#error
df %>% gather_(dyn_1,dyn_2,dyn_err_1:dyn_err_2)
经过一些调试后,我意识到错误发生在meltmeasure.vars部分,但我不知道如何让它与那里的“:”一起工作......
请帮助提供解决方案并解释一下,以便我可以了解更多信息。
你正在告诉gather_
寻找音量'v1:v3'
不在单独的列 ID 上。只需改变dyn_err <- "v1:v3"
to dyn_err <- paste("v", seq(3), sep="")
.
If you df
具有不同的列名称(例如 var_a、qtr_b、stg_c),您可以提取这些列名称或使用paste
函数用于任何感兴趣的变量。
dyn_err <- colnames(df)[2:4]
or
dyn_err <- paste(c("var", "qtr", "stg"), letters[1:3], sep="_")
您需要查看所需的列名称并制作相应的向量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)