emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Erik Iverson <eriki@ccbr.umn.edu>
To: Neil Hepburn <nhepburn@ualberta.ca>
Cc: "Sébastien Vauban" <wxhgmqzgwmuf@spammotel.com>, emacs-orgmode@gnu.org
Subject: Re: [Org-Babel] and R... non-numeric cells
Date: Thu, 12 Aug 2010 10:57:50 -0500	[thread overview]
Message-ID: <4C6419FE.3070708@ccbr.umn.edu> (raw)
In-Reply-To: <C3B8658F-315A-479F-BFFC-3637516BDEAA@ualberta.ca>

Which version of org-mode are you using? I do not see what you
claim to see.

What do you get when you run the following:

#+TBLNAME: mytbl
|column1|column2|
|------------|-----------|
|  45         |    34      |
|  77         |    56      |

#+BEGIN_SRC R :var tbl=mytbl :results output
str(tbl)
#+END_SRC


I get the following, which looks right to me.

#+results:
: 'data.frame':	2 obs. of  2 variables:
:  $ column1: int  45 77
:  $ column2: int  34 56


Neil Hepburn wrote:
> I have had a similar problem and I traced it back to the presence of horizontal lines in the source table. The two ways that I have dealt with the problem are to either not have horizontal lines in the table or use some R stuff to clean things up. For example, suppose that I have the following table
> 
> #+TBLNAME: mytbl
> |column1|column2|
> |------------|-----------|
> |  45         |    34      |
> |  77         |    56      |
> 
> 
> when I send that to R, it will treat everything as character due to the horizontal line.  The following R snippet will clean it up and recast everything as numeric.
> 
> #+BEGIN_SRC R :var tbl=mytbl
> names(tbl) <- tbl[1,]  #renames the variables from V1, V2 etc to what they should be
> tbl <- tb[-1,] #gets rid of the first row that had the errant variable names
> for (i in 1:ncol(tbl)){
> tbl[,i] <- as.numeric(tbl[,i])
> } # the for-loop goes through each column and recasts it as a numeric variable instead of character.
> #+END_SRC
> 
> of course, if you have a column of text in the first column (or any column for that matter) you need to adjust your for-loop accordingly.
> 
> I hope this helps.
> 
> -Neil
> 
> On 2010-08-12, at 9:06 AM, Sébastien Vauban wrote:
> 
>> Hello,
>>
>> For a report I'm writing, I've been helped by a colleague of mine (let's call
>> him Albert) for the R graphics generation.
>>
>> Here's an extract of my doc:
>>
>> --8<---------------cut here---------------start------------->8---
>> #+TBLNAME: investissement-2010-2013
>> #+ATTR_LaTeX: align=lSSSS
>> |                        | \s{Année 2010} | \s{Année 2011} | \s{Année 2012} | \s{Année 2013} |
>> |------------------------+----------------+----------------+----------------+----------------|
>> | RFO                    |     2596376.30 |     1500000.00 |      500000.00 |      500000.00 |
>> | RFO réseau structurant |     3804467.00 |     6534066.00 |     3804467.00 |           0.00 |
>> | Équipements            |     1000000.00 |      150000.00 |       50000.00 |       50000.00 |
>> |------------------------+----------------+----------------+----------------+----------------|
>> | Total (HTVA)           |     7400843.30 |     8184066.00 |     4354467.00 |      550000.00 |
>> #+TBLFM: @5$2=vsum(@-I..@-II);%.2f::@5$3=vsum(@-I..@-II);%.2f::@5$4=vsum(@-I..@-II);%.2f::@5$5=vsum(@-I..@-II);%.2f
>>
>> whose graphical representation is:
>>
>> #+srcname: barplot-investment(ptable = investissement-2010-2013)
>> #+begin_src R :file 1-01-investissement-2010-2013.png :exports none :session
>> source("mcplot.R", local=TRUE)
>> ## select the last row only, exclude first column, scale: unit = 1M
>> alldata <- as.matrix(ptable[2:4, -1]) / 1000000
>> axisLabels <- c("Année", "Montant HTVA (M€)")
>> mcStackedBarplot(alldata, "Investissements", c(2010:2013), ptable[-nrow(ptable),1], legend.location="topright")
>> #+end_src
>> --8<---------------cut here---------------end--------------->8---
>>
>> That works perfectly for him (on Ubuntu 9.04, R 2.7.1, Emacs 22.2.1, Org 6.35)
>>
>> Not for me... on Ubuntu 10.04, R 2.10.1, Emacs 23.1.1, Org 7.01, ESS 5.10: I
>> get the message
>>
>>    *Error in as.matrix(ptable[2:4, -1])/1e+06 :
>>     non-numeric argument to binary operator*
>>
>> As 1M is numeric, the non-numeric operand must be
>> =as.matrix(ptable[2:4, -1])=... Verification:
>>
>> --8<---------------cut here---------------start------------->8---
>>> ptable
>>                      V1              V2              V3              V4
>> 1                        \\s{Année 2010} \\s{Année 2011} \\s{Année 2012}
>> 2                    RFO       2596376.3       1500000.0        500000.0
>> 3 RFO réseau structurant       3804467.0       6534066.0       3804467.0
>> 4            Équipements       1000000.0        150000.0         50000.0
>> 5           Total (HTVA)       7400843.3       8184066.0       4354467.0
>>               V5
>> 1 \\s{Année 2013}
>> 2        500000.0
>> 3             0.0
>> 4         50000.0
>> 5        550000.0
>>
>>> as.matrix(ptable[2:4, -1])
>>  V2          V3          V4          V5        
>> 2 "2596376.3" "1500000.0" "500000.0"  "500000.0"
>> 3 "3804467.0" "6534066.0" "3804467.0" "0.0"     
>> 4 "1000000.0" "150000.0"  "50000.0"   "50000.0" 
>> --8<---------------cut here---------------end--------------->8---
>>
>> The numerics are written between double quotes... Why!?
>>
>> I had temporarily patched the above problem in my document by updating the line
>> with the assignment:
>>
>> --8<---------------cut here---------------start------------->8---
>> #+srcname: barplot-investment-sva(ptable = investissement-2010-2013)
>> #+begin_src R :file 1-01-investissement-sva-2010-2013.png :exports none :session
>> source("mcplot.R", local=TRUE)
>> ## select the last row only, exclude first column, scale: unit = 1M
>> alldata <- matrix(as.numeric(as.matrix(ptable[2:4, -1])), nrow=3, ncol=4) / 1000000
>> axisLabels <- c("Année", "Montant HTVA (M€)")
>> mcStackedBarplot(alldata, "Investissements", c(2010:2013), ptable[2:4,1], legend.location="topright")
>> #+end_src
>> --8<---------------cut here---------------end--------------->8---
>>
>> and I even just noticed that, instead of complexifying the expression, I can
>> simplify it, in my case, as my =ptable= is numeric already:
>>
>> --8<---------------cut here---------------start------------->8---
>>> ptable[2:4, -1]
>>         V2        V3        V4       V5
>> 2 2596376.3 1500000.0  500000.0 500000.0
>> 3 3804467.0 6534066.0 3804467.0      0.0
>> 4 1000000.0  150000.0   50000.0  50000.0
>> --8<---------------cut here---------------end--------------->8---
>>
>> But I still don't understand what is reponsible of a different treatment of
>> string and numerics between our 2 machines.
>>
>> Any idea?
>>
>> Best regards,
>>  Seb
>>
>> -- 
>> Sébastien Vauban
>>
>>
>> _______________________________________________
>> Emacs-orgmode mailing list
>> Please use `Reply All' to send replies to the list.
>> Emacs-orgmode@gnu.org
>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>>
> 
> 
> 
> =============================================
> Neil Hepburn, Lecturer in Economics
> Department of Social Sciences, Augustana Faculty
> University of Alberta
> 4901-46 Avenue
> Camrose, Alberta  T4V 2R3
> 
> Phone (780) 679-1588
> email nhepburn@ualberta.ca
> 
> No trees were harmed in creating this message. (However, millions of electrons were terribly disturbed.)
> 
> 
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

  reply	other threads:[~2010-08-12 15:57 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-12 15:06 [Org-Babel] and R... non-numeric cells Sébastien Vauban
2010-08-12 15:20 ` Erik Iverson
2010-08-12 15:30 ` Neil Hepburn
2010-08-12 15:57   ` Erik Iverson [this message]
2010-08-12 20:27 ` Dan Davison
2010-08-18  7:15   ` Sébastien Vauban

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C6419FE.3070708@ccbr.umn.edu \
    --to=eriki@ccbr.umn.edu \
    --cc=emacs-orgmode@gnu.org \
    --cc=nhepburn@ualberta.ca \
    --cc=wxhgmqzgwmuf@spammotel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).