emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Rainer M Krug <Rainer@krugs.de>
To: "Charles C. Berry" <ccberry@ucsd.edu>
Cc: emacs-orgmode@gnu.org
Subject: Re: [NEW PATCH] read.table in variable transfer caused sometimes "function not found" error - small change
Date: Thu, 09 Oct 2014 10:25:01 +0200	[thread overview]
Message-ID: <m2eguhveea.fsf@krugs.de> (raw)
In-Reply-To: <m2lhopvemz.fsf_-_@krugs.de> (Rainer M. Krug's message of "Thu, 09 Oct 2014 10:19:48 +0200")


[-- Attachment #1.1: Type: text/plain, Size: 136 bytes --]

*Please ignore the previous patch*

This updated patch contains the correct documentation and commit message

Sorry about the mistake,


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: The correct patch --]
[-- Type: text/x-patch, Size: 2425 bytes --]

From 58cb8521d4d4b620b0c5210a9b7232f99f7c720c Mon Sep 17 00:00:00 2001
From: "Rainer M. Krug" <R.M.Krug@gmail.com>
Date: Mon, 6 Oct 2014 13:48:49 +0200
Subject: [PATCH] ob-R.el: Add package name to read.table call

* lisp/ob-R.el:
(ob-R-transfer-variable-table-with-header): Add package name to call
of R function read.table (now utils::read.table).  This clarifies the
call as well as avoids 'could not find function' error in R under
certain conditions.

(ob-R-transfer-variable-table-without-header): Add package name to call
of R function read.table (now utils::read.table).  This clarifies the
call as well as avoids 'could not find function' error in R under
certain conditions.
---
 lisp/ob-R.el | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/lisp/ob-R.el b/lisp/ob-R.el
index ea33031..0b24a64 100644
--- a/lisp/ob-R.el
+++ b/lisp/ob-R.el
@@ -101,7 +101,7 @@ this variable.")
      con <- textConnection(
        %S
      )
-     res <- read.table(
+     res <- utils::read.table(
        con,
        header    = %s,
        row.names = %s,
@@ -112,14 +112,17 @@ this variable.")
      res
    })"
   "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 function is used when the table contains a header. The usage
+of utils::read.table() ensures that the command read.table() can
+be found even in circumstances when the utils package is not in
+the search path from R.")
 
 (defconst ob-R-transfer-variable-table-without-header
   "%s <- local({
      con <- textConnection(
        %S
      )
-     res <- read.table(
+     res <- utils::read.table(
        con,
        header    = %s,
        row.names = %s,
@@ -132,7 +135,10 @@ This function is used when the table contains a header.")
      res
    })"
   "R code used to transfer a table defined as a variable from org to R.
-This function is used when the table does not contain a header.")
+This function is used when the table does not contain a
+header. The usage of utils::read.table() ensures that the command
+read.table() can be found even in circumstances when the utils
+package is not in the search path from R.")
 
 (defun org-babel-expand-body:R (body params &optional graphics-file)
   "Expand BODY according to PARAMS, return the expanded body."
-- 
2.1.2


[-- Attachment #1.3: Type: text/plain, Size: 4076 bytes --]

Rainer


Rainer M Krug <Rainer@krugs.de> writes:

> "Charles C. Berry" <ccberry@ucsd.edu> writes:
>
>> On Wed, 8 Oct 2014, Rainer M Krug wrote:
>>
>>> "Charles C. Berry" <ccberry@ucsd.edu> writes:
>>>
>>>> On Wed, 8 Oct 2014, Rainer M Krug wrote:
>>>>
>>>>> "Charles C. Berry" <ccberry@ucsd.edu> writes:
>>>>>
>>>>>> On Mon, 6 Oct 2014, Rainer M Krug wrote:
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> The variable transfer of tables from org to R caused sometimes 'could
>>>>>>> not find function "read.table"' errors (e.g. when the file was tangled
>>>>>>> into a ./data directory which was loaded by the function
>>>>>>> devtools::load_all("./")). This can easily be fixed by adding the package
>>>>>>> name to the call in R, i.e. replacing =read.table()= with
>>>>>>> =utils::read.table()= which is done in this patch.
>>>>>>
>>>>>> It does fix that one case.
>>>>>>
>>>>>> But I wonder if that is the best way.
>>>>>>
>>>>>> The heart of the matter is that load_all eventually calls sys.source,
>>>>>> which can be persnickety about finding objects on the search path. See
>>>>>> ?sys.source.
>>>>>>
>>>>>> If the src block you tangle to ./data/ has any code that uses any
>>>>>> other objects from utils, stats, datasets or whatever, you will be in
>>>>>> the same pickle.
>>>>>
>>>>> Exactly - that is true. But it is the same when putting this in a
>>>>> package (as far as I am aware).
>>>>>
>>>>
>>>> Do you mean that putting `x <- rnorm(10)' into a data/*.R file will
>>>> fail when you try to build and check?
>>>>
>>>> In fact, `R CMD build' will execute it and save the result as a
>>>> data/*.rda file. And check will go through.
>>>>
>>>> devtools::load_all (calling load_data) fails to do that. Which is why
>>>> I think this is a devtools issue.
>>>
>>> OK - point taken. But I still think that the =utils::read.table()= would
>>> not hurt, rather make the variable transfer safer.
>>>
>>
>> What you want to change is in a defconst. So, the user can override
>> with a file-local version.
>>
>> So, making the change really is harmless.
>>
>> Maybe add a note to the docstring to say that using
>> utils::read.table' assures that `read.table' always can be found just
>> in case anyone ever asks.
>
> OK - done in attached patch.
>
> Rainer
> From 1eadbf6b44b8fc2fa5af29ea483383e9d137d19e Mon Sep 17 00:00:00 2001
> From: "Rainer M. Krug" <R.M.Krug@gmail.com>
> Date: Mon, 6 Oct 2014 13:48:49 +0200
> Subject: [PATCH] ob-R.el: Add package name to read.table call
>
> * lisp/ob-R.el:
> (ob-R-transfer-variable-table-with-header): Add package name to call
> of R function read.table (now utils::read.table).  This clarifies the
> call as well as avoids 'could not find function' error in R under
> certain conditions.
> ---
>  lisp/ob-R.el | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/lisp/ob-R.el b/lisp/ob-R.el
> index ea33031..a64b647 100644
> --- a/lisp/ob-R.el
> +++ b/lisp/ob-R.el
> @@ -101,7 +101,7 @@ this variable.")
>       con <- textConnection(
>         %S
>       )
> -     res <- read.table(
> +     res <- utils::read.table(
>         con,
>         header    = %s,
>         row.names = %s,
> @@ -112,14 +112,17 @@ this variable.")
>       res
>     })"
>    "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 function is used when the table contains a header. The usage
> +of utils::read.table() ensures that the command read.table() can
> +be found even in circumstances when the utils package is not in
> +the search path from R.")
>  
>  (defconst ob-R-transfer-variable-table-without-header
>    "%s <- local({
>       con <- textConnection(
>         %S
>       )
> -     res <- read.table(
> +     res <- utils::read.table(
>         con,
>         header    = %s,
>         row.names = %s,
> -- 
> 2.1.2
>
>
>>
>> Chuck
>>
>>

-- 
Rainer M. Krug
email: Rainer<at>krugs<dot>de
PGP: 0x0F52F982

[-- Attachment #2: Type: application/pgp-signature, Size: 494 bytes --]

  reply	other threads:[~2014-10-09  8:25 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-06 12:00 [PATCH] read.table in variable transfer caused sometimes "function not found" error - small change Rainer M Krug
2014-10-07 20:51 ` Charles C. Berry
2014-10-08  9:54   ` Rainer M Krug
2014-10-08 15:43     ` Charles C. Berry
2014-10-08 18:39       ` Rainer M Krug
2014-10-08 21:34         ` Charles C. Berry
2014-10-09  8:19           ` [NEW PATCH] " Rainer M Krug
2014-10-09  8:25             ` Rainer M Krug [this message]
2014-10-10  4:21               ` Aaron Ecay
2014-10-10  7:43                 ` Rainer M Krug

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=m2eguhveea.fsf@krugs.de \
    --to=rainer@krugs.de \
    --cc=ccberry@ucsd.edu \
    --cc=emacs-orgmode@gnu.org \
    /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).