2014-09-30 6 views
5

के अलावा कुछ भी होने के लिए "इकट्ठा" द्वारा आउट किए गए कॉलम नामों को नहीं बदला जा सकता है, मैं tidyr पैकेज में gather का उपयोग करने का प्रयास कर रहा हूं, लेकिन मैं डिफ़ॉल्ट रूप से आउटपुट कॉलम नामों को बदलने में सक्षम नहीं हूं नाम। उदाहरण के लिए:डिफ़ॉल्ट नाम

df = data.frame(time = 1:100,a = 1:100,b = 101:200) 
df.long = df %>% gather("foo","bar",a:b) 
colnames(df.long) 

मुझे

[1] "time"  "variable" "value" 

देता है, लेकिन यह "time" "foo" "bar" नहीं होना चाहिए?

मैं जो भी चाहता हूं उसे "foo" और "bar" बदल सकता हूं, और यह अभी भी मुझे "चरम" और "मान" को मेरे कॉलम नाम के रूप में देता है।

सहायता। मुझे यहां क्या समझ नहीं आ रहा है?

+0

आपका कोड मेरे लिए काम करता है। मैंने 'dplyr' भी लोड किया था। –

+3

हे सब, मेरी समस्या यह थी कि मुझे एक ही समय में प्लीयर और डिपर लोड किया गया था। मुझे बस इतना करना है, लिखना है 'डिटेच ("पैकेज: प्लीर")' और कोड – dvdkamp

+0

@dvdkamp काम करता है: यह कभी-कभी काम नहीं कर सकता है जब विशेष रूप से नेमस्पेस के माध्यम से dplyr लोड किया जा सकता है। – KFB

उत्तर

2

यह संभवतः एक बग हो सकता है। यदि आप डेटाटेबल के पिघल() की कोशिश करने के इच्छुक हैं, तो आप नीचे कर सकते हैं:

# Need to load both data.table and reshape2 
# For more information, could check ?data.table 
library(reshape2); library(data.table) 
setDT(df) 
df %>% melt(id.vars = "time", variable.name = "foo", value.name = "bar") 

> First 20 rows 
    time foo bar 
1: 1 a 1 
2: 2 a 2 
3: 3 a 3 
4: 4 a 4 
5: 5 a 5 
6: 6 a 6 
7: 7 a 7 
8: 8 a 8 
9: 9 a 9 
10: 10 a 10 
11: 1 b 11 
12: 2 b 12 
13: 3 b 13 
14: 4 b 14 
15: 5 b 15 
16: 6 b 16 
17: 7 b 17 
18: 8 b 18 
19: 9 b 19 
20: 10 b 20 
संबंधित मुद्दे