From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rainer M Krug Subject: [NEW PATCH] read.table in variable transfer caused sometimes "function not found" error - small change Date: Thu, 09 Oct 2014 10:19:48 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:36625) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xc8z0-0003XU-Lv for emacs-orgmode@gnu.org; Thu, 09 Oct 2014 04:22:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xc8yt-0005lq-1k for emacs-orgmode@gnu.org; Thu, 09 Oct 2014 04:21:58 -0400 Received: from mail-wi0-f173.google.com ([209.85.212.173]:48654) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xc8x3-0003Rc-O6 for emacs-orgmode@gnu.org; Thu, 09 Oct 2014 04:19:57 -0400 Received: by mail-wi0-f173.google.com with SMTP id fb4so12379436wid.12 for ; Thu, 09 Oct 2014 01:19:57 -0700 (PDT) In-Reply-To: (Charles C. Berry's message of "Wed, 8 Oct 2014 14:34:49 -0700") 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: "Charles C. Berry" Cc: emacs-orgmode@gnu.org --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain "Charles C. Berry" writes: > On Wed, 8 Oct 2014, Rainer M Krug wrote: > >> "Charles C. Berry" writes: >> >>> On Wed, 8 Oct 2014, Rainer M Krug wrote: >>> >>>> "Charles C. Berry" 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 --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-ob-R.el-Add-package-name-to-read.table-call.patch Content-Transfer-Encoding: quoted-printable Content-Description: The Patch From=201eadbf6b44b8fc2fa5af29ea483383e9d137d19e Mon Sep 17 00:00:00 2001 From: "Rainer M. Krug" 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. =2D-- 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 =2D-- a/lisp/ob-R.el +++ b/lisp/ob-R.el @@ -101,7 +101,7 @@ this variable.") con <- textConnection( %S ) =2D res <- read.table( + res <- utils::read.table( con, header =3D %s, row.names =3D %s, @@ -112,14 +112,17 @@ this variable.") res })" "R code used to transfer a table defined as a variable from org to R. =2DThis 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.") =20 (defconst ob-R-transfer-variable-table-without-header "%s <- local({ con <- textConnection( %S ) =2D res <- read.table( + res <- utils::read.table( con, header =3D %s, row.names =3D %s, =2D-=20 2.1.2 --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable > > Chuck > > =2D-=20 Rainer M. Krug email: Rainerkrugsde PGP: 0x0F52F982 --=-=-=-- --==-=-= Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.22 (Darwin) iQEcBAEBAgAGBQJUNkUpAAoJENvXNx4PUvmCKlUIAIi/JkSX3Es5BNEMB8Ix5Wg6 K4S0D/4RyGZl8+ljpzolebKsVBf4iK4ektBWsmfU5OoTk3fGqU6GCiGcTWsdzHIV 3tmuSmmNfsGfEkd4zoWOt0tynJQKd07tz++2NNgBA2W5B/FxnkTdi6cl9y9V/Im8 J0BggJvgSDrBQOze/sdLA89OS92gmWC1vUy+vZKDjkIoCBqhNu21ojPfC9MpZ+x6 3jmyNMG/s7Y8p59Dw9ShuzoeG56dEaVbZ3ba6baA+YsO69avA0n7NFxih8dLMPic Jp6bssJ4v57woGYgBRx+3NRwsWD6jTBJ77neD5/IGymiovpbK1LlrSiXNEOsQ60= =3FQX -----END PGP SIGNATURE----- --==-=-=--