आर

2013-06-13 6 views
5

में प्रति कॉलम की विभिन्न संख्याओं के साथ डेटाफ्रेम लिखें, मुझे डेटाफ्रेम या डेटा.table जेनरेट करने की आवश्यकता है जिसमें प्रति स्तंभ दशमलव स्थानों की अलग-अलग संख्याएं हों।आर

उदाहरण के लिए:

Scale  Status 
1.874521 1 

की जरूरत के रूप में एक सीएसवी में मुद्रित किया जाना है:

Scale,  Status 
1.874521, 1.000 

यह है के रूप में मैं format(DF$status, digits=3) की कोशिश की है और as.numeric(format(DF$status, digits=3)) लेकिन इस में बदल देता है एक अंकीय मान के रूप में होना करने के लिए सीएसवी को निर्यात किए जाने वाले पात्रों में डबल कोट्स होते हैं। "

मेरे वास्तविक डेटाफ्रेम में दशमलव प्लै की अलग-अलग मात्रा के साथ बहुत सारे कॉलम हैं सीईएस के साथ-साथ पात्रों को भी दोहराया जाना चाहिए ताकि मैं सिस्टम व्यापक परिवर्तन लागू नहीं कर सकूं।

+4

'write.csv' में 'उद्धरण' विकल्प है जिसे आप 'गलत' पर सेट कर सकते हैं। –

+2

आप 'write.csv' में 'quote = FALSE' का उपयोग कर सकते हैं ?? – Arun

+1

'उद्धरण = गलत' निश्चित रूप से वह करेगा जो वह पूछ रहा है। मुझे आश्चर्य है कि 'data.frame' में उसके पास वर्ण स्तंभ भी हैं जिन्हें डबल कोट के साथ _with_ मुद्रित करने की आवश्यकता है। – Michele

उत्तर

6

quote=FALSE करने से बेहतर विकल्प है, वास्तव में यह निर्दिष्ट करना है कि आप कौन से कॉलम उद्धृत करना चाहते हैं, क्योंकि quote परम कॉलम इंडेक्स का वेक्टर हो सकता है जिसे आप उद्धृत करना चाहते हैं। जैसे

d = data.table(a = c("a", "b"), b = c(1.234, 1.345), c = c(1, 2.1)) 
d[, b := format(b, digits = 2)] 
d[, c := format(c, nsmall = 3)] 
d 
# a b  c 
#1: a 1.2 1.000 
#2: b 1.3 2.100 

write.csv(d, 'file.csv', quote = c(1,2), row.names = F) 
#file.csv: 
#"a","b","c" 
#"a","1.2",1.000 
#"b","1.3",2.100 
+0

के कारण 'quote = FALSE' सेट नहीं कर सकता, इस बहुत सराहना के लिए धन्यवाद। मेरे पास अब 'as.data.table (डीएफ [, स्थिति: = प्रारूप (स्थिति, nsmall = 3)]) का उपयोग कर एक समाधान समाधान है और वेक्टर को उद्धरण पैरामीटर में जोड़ रहा है। बहुत सरल और सुरुचिपूर्ण समाधान। धन्यवाद। – Richard