Or, fiddling a bit more.

#+name: luo
#+BEGIN_SRC R :results output raw
  library(ascii)
  df <- data.frame(c1="123456789123456789000",c2=2)
  df$c1 <- as.vector(df$c1)
  print(ascii(df,digits=c(0,0),include.rownames=F),type="org")
#+END_SRC

#+RESULTS: luo
|                    c1 | c2 |
|-----------------------+----|
| 123456789123456789000 |  2 |


t...@tsdye.com (Thomas S. Dye) writes:

> Hi Eric,
>
> I don't know any way to do this in Org-mode.  Here is a workaround in R
> that might do what you want.
>
> #+name: luo
> #+BEGIN_SRC R :results output org
>   library(ascii)
>   df <- data.frame(c1="123456789123456789000",c2=2)
>   df$c1 <- as.vector(df$c1)
>   print(ascii(df),type="org")
> #+END_SRC
>
> #+RESULTS: luo
> #+BEGIN_ORG
> |   | c1                    | c2   |
> |---+-----------------------+------|
> | 1 | 123456789123456789000 | 2.00 |
> #+END_ORG
>
> All the best,
> Tom
>
> Eric Luo <eric.we...@gmail.com> writes:
>
>> t...@tsdye.com (Thomas S. Dye) writes:
>>
>> Thanks, it's clear to me with the difference between "value" and
>> "output" now.
>>
>> whether there is a way to tell emacs-lisp that "123456789123456789" is a
>> string rather than a number.
>>
>> emacs-lisp handles the output as expected if the c1 has any character
>> other than numbers as the following.
>> ,----
>> | #+BEGIN_SRC R
>> |   df <- data.frame(c1="c123456789123456789",c2=2)
>> |   df$c1 <- as.vector(df$c1)
>> |   df
>> | #+END_SRC
>> | 
>> | #+RESULTS:
>> | | c123456789123456789 | 2 |
>> | 
>> `----
>>
>>> Aloha Eric,
>>>
>>> Eric Luo <eric.we...@gmail.com> writes:
>>>
>>>> Hi, 
>>>> Why in the following code block, c1 was printed as scientific notation
>>>> rather then characters.
>>>> ,----
>>>> | 
>>>> | #+BEGIN_SRC R :results value
>>>> |   df <- data.frame(c1="123456789123456789",c2=2)
>>>> | #+END_SRC
>>>> | 
>>>> | #+RESULTS:
>>>> | | 1.2345678912345678e+17 | 2 |
>>>> `----
>>>
>>> With :results value the results are passed from the source language into
>>> emacs-lisp and then displayed in the buffer.  So, the representation of
>>> things like very large numbers depends on how that was done in
>>> emacs-lisp, independent of the source language conventions.  In this
>>> case, I suspect the number was written with a formatting string and ā€˜%gā€™
>>> which uses scientific notation if that is a shorter representation.
>>>
>>>
>>>> But if the header :results output, the result was expected.
>>>> ,----
>>>> | 
>>>> | #+BEGIN_SRC R :results output 
>>>> |   df <- data.frame(c1="123456789123456789",c2=2)
>>>> |   df
>>>> | #+END_SRC
>>>> | 
>>>> | #+RESULTS:
>>>> | :                   c1 c2
>>>> | : 1 123456789123456789  2
>>>> `----
>>>>
>>>
>>> With :results output the results aren't translated into emacs-lisp.
>>> Instead, the output from the source language is collected and displayed
>>> in the buffer.  Thus, the output conventions of the source language are
>>> respected. 
>>>
>>> hth,
>>
>>
>>

-- 
Thomas S. Dye
http://www.tsdye.com

Reply via email to