From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andreas Leha Subject: Re: org tables into R? Date: Tue, 06 Jan 2015 12:07:42 +0000 Message-ID: References: <874ms6w0it.fsf@gmail.com> <87zj9xa1ni.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:34689) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y8Szo-0006kX-8X for emacs-orgmode@gnu.org; Tue, 06 Jan 2015 07:12:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y8Szk-0001sq-B9 for emacs-orgmode@gnu.org; Tue, 06 Jan 2015 07:12:24 -0500 Received: from plane.gmane.org ([80.91.229.3]:55196) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y8Szk-0001si-0m for emacs-orgmode@gnu.org; Tue, 06 Jan 2015 07:12:20 -0500 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1Y8Svb-00049K-BS for emacs-orgmode@gnu.org; Tue, 06 Jan 2015 13:08:03 +0100 Received: from p5b0ee614.dip0.t-ipconnect.de ([91.14.230.20]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 06 Jan 2015 13:08:03 +0100 Received: from andreas.leha by p5b0ee614.dip0.t-ipconnect.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 06 Jan 2015 13:08:03 +0100 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: emacs-orgmode@gnu.org Hi Rainer, Thanks for chiming in. Rainer M Krug writes: > Andreas Leha writes: > >> Hi Aaron and Nicolas, > > Sorry for coming so late to this topic - I should try to figure out what > is causing the problem as I am the one responsible for this code... > >> >> Thanks for partly fixing this issue. Unfortunately, when working with >> source block interactively the issue persists for me. If in the same >> sample file I view the source block via 'C-c C-v v' and step through the >> generated code line-by-line, the table is again not split into columns. >> >> This time I immediately tried with 'emacs -Q' and I can reproduce the >> issue. >> >> Here is the ecm again: >> >> * test >> #+NAME: data >> | A | B | C | >> |-----+----+----| >> | 115 | 76 | 60 | >> | 124 | 78 | 55 | >> | 118 | 73 | 65 | >> | 114 | 75 | 61 | >> | 108 | 74 | 82 | >> >> and pass it into R like this, then evaluation (C-c C-c) works, but >> stepping through the code generated for viewing (C-c C-v v) does not: >> >> #+BEGIN_SRC R :results output :exports both :session :var data.table=data >> names(data.table) >> head(data.table) >> #+END_SRC >> >> #+results: >> : [1] "A" "B" "C" >> : A B C >> : 1 115 76 60 >> : 2 124 78 55 >> : 3 118 73 65 >> : 4 114 75 61 >> : 5 108 74 82 >> >> #+begin_src emacs-lisp >> (concat >> (replace-regexp-in-string " on .*" "" (emacs-version)) >> "\n" >> (replace-regexp-in-string " @.*" ")" (org-version nil t)) >> "\n" >> (replace-regexp-in-string "].*" "]" (ess-version))) >> #+end_src >> >> #+results: >> : GNU Emacs 24.4.50.1 (x86_64-apple-darwin13.3.0, NS appkit-1265.21 Version 10.9.4 (Build 13E28)) >> : of 2014-09-02 >> : Org-mode version 8.3beta (release_8.3beta-717-ga8096c) >> : ess-version: 14.05 [git: 4283f1304a54502c42707b6a4ba347703f0992dd] >> > > ,---- > | #+RESULTS: > | : GNU Emacs 24.4.1 (x86_64-apple-darwin14.0.0, Carbon Version 157 AppKit 1343.16) > | : of 2014-11-24 > | : Org-mode version 8.3beta (release_8.3beta-695-g390015) > | : ess-version: 14.09 [svn: 6041 (2014-09-13)] > `---- > > > I get the same in the preview, but it works for me. I do not use -q. > > ,---- > | > data.table <- local({ > | + con <- textConnection( > | + "\"A\" \"B\" \"C\" > | + \"115\" \"76\" \"60\" > | + \"124\" \"78\" \"55\" > | + \"118\" \"73\" \"65\" > | + \"114\" \"75\" \"61\" > | + \"108\" \"74\" \"82\"" > | + ) > | + res <- utils::read.table( > | + con, > | + header = TRUE, > | + row.names = NULL, > | + sep = "\t", > | + as.is = TRUE > | + ) > | + close(con) > | + res > | + }) > | > names(data.table) > | [1] "A" "B" "C" > | > head(data.table) > | A B C > | 1 115 76 60 > | 2 124 78 55 > | 3 118 73 65 > | 4 114 75 61 > | 5 108 74 82 > | > > `---- > > >> >> Here is what I see in the org babel preview: >> > > This might be due to temail, but you don't have tabs (\t) between your > entries below - could you verify if this is the case? If yes, this might > be a locale issue (would be strange)? Yes, there seem to be no tabs. If there were tabs, R should parse the table correctly, I guess. (BTW: My custom filter replacing tabs with spaces is still disabled, even though I pulled from master, which includes the recent commit 70f965535b07c03a40792237de3a970d1cb57551 Author: Nicolas Goaziou Date: Mon Jan 5 12:39:26 2015 +0100 org-table: Ignore filters and hooks in radio tables ) > >> data.table <- local({ >> con <- textConnection( >> "\"A\" \"B\" \"C\" >> \"115\" \"76\" \"60\" >> \"124\" \"78\" \"55\" >> \"118\" \"73\" \"65\" >> \"114\" \"75\" \"61\" >> \"108\" \"74\" \"82\"" >> ) >> res <- utils::read.table( >> con, >> header = TRUE, >> row.names = NULL, >> sep = "\t", >> as.is = TRUE >> ) >> close(con) >> res >> }) >> names(data.table) >> head(data.table) > > One solution would be to insert (instead of the tab character) "\t" to > separate the fields? > > You could try and modify the ob-R-transfer-variable-table-with-header - > From the help: > > ,---- > | ob-R-transfer-variable-table-with-header is a variable defined in `ob-R.el'. > | Its value is > | "%s <- local({\n con <- textConnection(\n %S\n )\n res <- > | utils::read.table(\n con,\n header = %s,\n row.names = %s,\n sep = > | \"\\t\",\n as.is = TRUE\n )\n close(con)\n res\n })" > | > | This variable may be risky if used as a file-local variable. > | > | Documentation: > | R code used to transfer a table defined as a variable from org to R. > | > | This function is used when the table contains a header. > `---- > > This is passed to the (format) function and one might be able to change > something there. Thanks for the hint. Do I assume correctly, that this variable is used when the code block is evaluated as well? In that case, I am reluctant to change it, as the evaluation now works. The surprising thing is the different behaviour for preview and evaluation. I am extremely tight with my time right now, so that I won't be able to do much experimentation/investigation right now, I am afraid. But I will try to still be helpful... Thanks, Andreas > > Cheers, > > Rainer > >> >> >> And finally, here is my R session, when I step through the code: >> >> >> R version 3.1.2 (2014-10-31) -- "Pumpkin Helmet" >> Copyright (C) 2014 The R Foundation for Statistical Computing >> Platform: x86_64-apple-darwin10.8.0 (64-bit) >> >> R is free software and comes with ABSOLUTELY NO WARRANTY. >> You are welcome to redistribute it under certain conditions. >> Type 'license()' or 'licence()' for distribution details. >> >> Natural language support but running in an English locale >> >> R is a collaborative project with many contributors. >> Type 'contributors()' for more information and >> 'citation()' on how to cite R or R packages in publications. >> >> Type 'demo()' for some demos, 'help()' for on-line help, or >> 'help.start()' for an HTML browser interface to help. >> Type 'q()' to quit R. >> >>> > options(STERM='iESS', str.dendrogram.last="'", editor='emacsclient', show.error.locations=TRUE) >>> data.table <- local({ >> + con <- textConnection( >> + "\"A\" \"B\" \"C\" >> + \"115\" \"76\" \"60\" >> + \"124\" \"78\" \"55\" >> + \"118\" \"73\" \"65\" >> + \"114\" \"75\" \"61\" >> + \"108\" \"74\" \"82\"" >> + ) >> + res <- utils::read.table( >> + con, >> + header = TRUE, >> + row.names = NULL, >> + sep = "\t", >> + as.is = TRUE >> + ) >> + close(con) >> + res >> + }) >>> names(data.table) >> [1] "A...B...C" >>> head(data.table) >> A...B...C >> 1 115 76 60 >> 2 124 78 55 >> 3 118 73 65 >> 4 114 75 61 >> 5 108 74 82 >> >> >> Regards, >> Andreas >> >> >>