From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Schulte Subject: Re: [0][babel][R] Undesired conversion of integers to floats in R code block output Date: Sat, 18 Feb 2012 09:23:36 -0700 Message-ID: <87boowrtyv.fsf@gmx.com> References: <4F3D53D6.40407@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([140.186.70.92]:50846) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ryn4e-0004Zh-91 for emacs-orgmode@gnu.org; Sat, 18 Feb 2012 11:23:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ryn4c-000341-Lg for emacs-orgmode@gnu.org; Sat, 18 Feb 2012 11:23:48 -0500 Received: from mailout-us.gmx.com ([74.208.5.67]:35970) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1Ryn4c-00033w-Fy for emacs-orgmode@gnu.org; Sat, 18 Feb 2012 11:23:46 -0500 In-Reply-To: <4F3D53D6.40407@gmail.com> (Daniel Drake's message of "Thu, 16 Feb 2012 11:07:02 -0800") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Daniel Drake Cc: "emacs-orgmode@gnu.org" --=-=-= Content-Type: text/plain Daniel Drake writes: > Hi All, > > I'm using R in org-mode/babel to analyze data from a psychological > study. The subjects in this study are identified by nine digit integers > (e.g., 987654321) that I treat as strings (or factors) in my R data > frames. > > Tables output by an R code block that contain these subject IDs are > not formatted properly: the subject IDs seem to be treated as numbers > and a decimal point and a trailing zero are appended. For example, > what should be > | subj.id | > |-----------| > | 987654321 | > becomes > | subj.id | > | 987654321.0 | > (I've included real, self-contained code below.) > > When I write the data frames directly to a file from within the R code > block (using a write.table function call that mimics the one in > ob-R.el), the integer IDs are preserved; but when code from ob-R.el > writes them out, the values get reformated as floats. > > I've noticed that eight digit integers are not modified in the same > way, which makes me wonder if there is a 'digits' threshold I could > modify to prevent this from happening. > > I've pretty much ruled out the possibility that this transformation > occurs in R; however I'm not proficient enough in elisp to follow the > operations that happen after the data frame is written to a file in > the org-babel-R-write-object-command. > > Any pointers to help me figure this out would be very appreciated! > (I've seen this thread: > http://comments.gmane.org/gmane.emacs.orgmode/31373, but do not know > if the conversion to calc has been made already or if it is the source > of the problem.) > Hi Dan, When I launch Emacs without any personal configuration (emacs -Q), evaluate ob-R.el to add R support, and then execute your code blocks I get the following behavior. --=-=-= Content-Type: text/x-org Content-Disposition: inline; filename=dan.org * Test ** table as generated by org-mode/babel #+name: make #+begin_src R :results value :colnames yes temp <- data.frame('A'=c('987654321'),'B'=c('98765432')) ## -- this call mimics the one in ob-R.el write.table(temp,file='test_r.tsv',sep='\t',na='nil',row.names=FALSE,col.names=TRUE,quote=FALSE) temp #+end_src #+RESULTS: make | A | B | |-----------+----------| | 987654321 | 98765432 | ** table as generated by R directly #+name: read #+begin_src sh :results output cat test_r.tsv #+end_src #+RESULTS: read : A B : 987654321 98765432 --=-=-= Content-Type: text/plain I would recommend installing the latest version of Org-mode from source as that tends to fix many problems, and will at least ensure that we are both working from the same code base moving forward. See http://orgmode.org/worg/org-faq.html#Keeping-current Best, -- Eric Schulte http://cs.unm.edu/~eschulte/ --=-=-=--