3
我將tidyr與閃亮一起使用,因此需要在tidyr操作中使用動態值。 但是我確實遇到了使用gather_()的麻煩,我認爲這是爲這種情況設計的。下面 小例子:如何在變量中使用gather_ in tidyr
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)
經過一番調試,我意識到在熔體measure.vars部分發生錯誤,但我不知道如何得到它的工作「:」有...... 請幫助有一個解決方案並解釋一點,所以我可以瞭解更多。
嗨,再次感謝您的幫助。如果列不是v1:v3,但是有一些隨機名稱,如'var_a','qtr_b','length_c'?他們是有序的,但我想var_a通過length_c – 2014-10-17 18:29:18
@XiushiLe,做上面的編輯有助於澄清你怎麼能做到這一點幾乎任何列名? – cdeterman 2014-10-17 19:01:30
是的,它有幫助。我想我並不清楚':'是如何在R中表示的。我之前的解釋是從startcol到endcol,r會通過查看名稱(df)自動填寫剩下的部分。我試圖讓用戶輸入起始列,並且應該轉換起始列和最後一列之間的任何列。我認爲dyn_err < - colnames(df)[2:4]對我來說足夠好。 – 2014-10-17 19:19:03