From: "Charles C. Berry" <ccberry@ucsd.edu>
To: Rainer M Krug <Rainer@krugs.de>
Cc: emacs-orgmode@gnu.org, Eric Schulte <schulte.eric@gmail.com>
Subject: Re: [PATCH] -for review- Tangling with variable transfer of variables
Date: Mon, 23 Jun 2014 10:56:05 -0700 [thread overview]
Message-ID: <alpine.OSX.2.00.1406231020550.341@charles-berrys-macbook.local> (raw)
In-Reply-To: <m2ionsng18.fsf@krugs.de>
[-- Attachment #1: Type: TEXT/PLAIN, Size: 3740 bytes --]
On Mon, 23 Jun 2014, Rainer M Krug wrote:
> One more question concerning the variable transfer of tables:
>
> ,----
> | (let ((file (orgtbl-to-tsv value '(:fmt org-babel-R-quote-tsv-field)))
> | (header (if (or (eq (nth 1 value) 'hline) colnames-p)
> | "TRUE" "FALSE"))
> | (row-names (if rownames-p "1" "NULL")))
> | (if (= max min)
> | (format "%s <- local({
> | con <- textConnection(
> | %S
> | )
> | res <- read.table(
> | con,
> | header = %s,
> | row.names = %s,
> | sep = \"\\t\",
> | as.is = TRUE
> | )
> | close(con)
> | res
> | })" name file header row-names)
> | (format "%s <- local({
> | con <- textConnection(
> | %S
> | )
> | res <- read.table(
> | con,
> | header = %s,
> | row.names = %s,
> | sep = \"\\t\",
> | as.is = TRUE,
> | fill = TRUE,
> | col.names = paste(\"V\", seq_len(%d), sep =\"\")
> | )
> | close(con)
> | res
> | })" name file header row-names max))))
> `----
>
> It seems that the two variable transfer routines only differ slightly:
>
> 1. routine: =header= is present (TRUE) and defined in table when passed
> as =colnames= while
>
> 2. routine: =header= is not present (FALSE) and =colnames= is generated
> as V1 .. Vn
>
> This generation is actually not needed as this is the R default value
> which is used when =colnames= is not supplied.
>
> Also: I do not undestand why the argument =fill= is TRUE in the second
> routine. From R:
>
> ,----
> | fill: logical. If ‘TRUE’ then in case the rows have unequal length,
> | blank fields are implicitly added. See ‘Details’.
> `----
>
> If I understands tables in org correctly, this is not needed as the rows
> always have equal length?
>
> so if I am not mistaken the following lines could be deleted:
>
> ,----
> | row.names = %s,
> | sep = \"\\t\",
> | as.is = TRUE,
> | - fill = TRUE,
> | - col.names = paste(\"V\", seq_len(%d), sep =\"\")
> `----
>
> Or am I missing something here?
You need not pass a table - this
#+BEGIN_SRC R :var x='(1 2 3)(4 5))
will produce a data.frame with two rows with is.na(x[2,2]) being TRUE.
Re col.names, from help("read.table")
The number of data columns is determined by looking at the first
five lines of input (or the whole file if it has less than five
lines), or from the length of 'col.names' if it is specified and
is longer. This could conceivably be wrong if 'fill' or
'blank.lines.skip' are true, so specify 'col.names' if necessary
(as in the 'Examples').
This block
#+BEGIN_SRC R :var x=(append (make-vector 10 '(1 2)) '((1 2 3)))
x
#+END_SRC
makes an 11 by 3 data.frame with all(is.na(x[,1:10]))
but taking away the col.names arg will cause it to make a 12 by 2
data.frame with x[12,1]==3 and is.na(x[12,2]).
so leave the col.names as is, I think.
Without fill, read.table will throw an error in that block
Chuck
[rest deleted]
next prev parent reply other threads:[~2014-06-23 17:56 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-19 20:19 [PATCH] -for review- Tangling with variable transfer of variables Rainer M Krug
2014-06-19 21:09 ` Aaron Ecay
2014-06-19 23:23 ` Charles Berry
2014-06-20 13:15 ` Rainer M Krug
2014-06-20 20:34 ` Rainer M Krug
2014-06-21 19:44 ` Charles C. Berry
2014-06-22 3:39 ` Aaron Ecay
2014-06-23 10:46 ` Rainer M Krug
2014-06-23 8:57 ` Rainer M Krug
2014-06-23 9:14 ` Rainer M Krug
2014-06-23 17:56 ` Charles C. Berry [this message]
2014-06-24 12:08 ` Rainer M Krug
2014-06-23 10:45 ` Rainer M Krug
2014-06-23 18:25 ` Charles C. Berry
2014-06-24 12:28 ` Rainer M Krug
2014-06-20 13:07 ` 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=alpine.OSX.2.00.1406231020550.341@charles-berrys-macbook.local \
--to=ccberry@ucsd.edu \
--cc=Rainer@krugs.de \
--cc=emacs-orgmode@gnu.org \
--cc=schulte.eric@gmail.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).