2016-10-17 9 views
5

मैं एक dataframe है द्वारा निर्दिष्ट किया जाता का उपयोग कर dataframe में एक नया स्तंभ जोड़ें, कि मैं एक स्तंभ जोड़ना चाहते हैं, के लिए जहां स्तंभ एक चर नाम से परिभाषित किया गया है:mutate_ जहां स्तंभ नाम एक चर

df <- diamonds 
NewName <- "SomeName" 
df <- df %>% mutate_(paste0(NewName," = \"\"")) 

mutate_ के उदाहरण के बहुत सारे

Error: attempt to use zero-length variable name 

मैंने देखा है स्तंभ नाम बदलने के लिए इस्तेमाल किया जा रहा है, लेकिन गतिशील कॉलम नहीं बनाने के लिए: यह मैं निम्न त्रुटि देता है। कोई मदद?

+0

I कोई त्रुटि नहीं, केवल 'कुछ नाम = "" ' – Haboryme

+0

नामक एक कॉलम सभी लाइनों का चयन करें और इसे फिर से चलाएं, ऐसा लगता है कि यह tempramental – pluke

+0

वास्तव में, यह दूसरी बार काम नहीं करता है। – Haboryme

उत्तर

3

इस मुद्दे को तब करना होगा जब कथन का मूल्यांकन हो रहा है। मेरी समझ से, mutate_ का लक्ष्य mutate के सिंटैक्स को फिर से बनाना नहीं है, उदाहरण के लिए paste का उपयोग mutate(SomeName = "") बनाने के लिए। इसके बजाय, यह कार्यों की पीढ़ी को पारित करने की अनुमति देना है। आपका दृष्टिकोण असफल होने का कारण है (मुझे विश्वास है) यह तथ्य है कि यह "" नामक फ़ंक्शन की तलाश में है।

इसके बजाय, आपको एक ऐसे फ़ंक्शन में पास करने की आवश्यकता है जिसका मूल्यांकन किया जा सकता है (यहां, मैं प्लेसहोल्डर के रूप में paste का उपयोग कर रहा हूं) और अपने चर का उपयोग करके उस कॉलम का नाम सेट करें। यह काम करना चाहिए:

df <- df %>% mutate_(.dots = setNames("paste(cut, color)",NewName)) 

देता है::

carat  cut color clarity depth table price  x  y  z SomeName 
    <dbl>  <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>  <chr> 
1 0.23  Ideal  E  SI2 61.5 55 326 3.95 3.98 2.43  Ideal E 
2 0.21 Premium  E  SI1 59.8 61 326 3.89 3.84 2.31 Premium E 
3 0.23  Good  E  VS1 56.9 65 327 4.05 4.07 2.31  Good E 
4 0.29 Premium  I  VS2 62.4 58 334 4.20 4.23 2.63 Premium I 
5 0.31  Good  J  SI2 63.3 58 335 4.34 4.35 2.75  Good J 
6 0.24 Very Good  J VVS2 62.8 57 336 3.94 3.96 2.48 Very Good J 
7 0.24 Very Good  I VVS1 62.3 57 336 3.95 3.98 2.47 Very Good I 
8 0.26 Very Good  H  SI1 61.9 55 337 4.07 4.11 2.53 Very Good H 
9 0.22  Fair  E  VS2 65.1 61 337 3.87 3.78 2.49  Fair E 
10 0.23 Very Good  H  VS1 59.4 61 338 4.00 4.05 2.39 Very Good H 

(ध्यान दें, मैं भी मिला

df <- diamonds 
NewName <- "SomeName" 
df <- df %>% mutate_(.dots = setNames("paste('')",NewName)) 

यह भी उदाहरण के लिए, आप cut और color पेस्ट कर सकता है और अधिक नियंत्रण की अनुमति देता है, पहली बार काम करने के लिए प्रारंभिक वाक्यविन्यास, बाद की असफलताओं के बाद। इसमें खुदाई करने योग्य मूल्य।)

संबंधित मुद्दे