mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-09-29 18:36:26 +00:00
clean up the code implementing reads of irregular data into R
* lisp/ob-R.el (org-babel-R-assign-elisp): Clean up the code implementing reads of irregular data into R.
This commit is contained in:
parent
870b4e3c9d
commit
fb7ebd2dae
37
lisp/ob-R.el
37
lisp/ob-R.el
|
@ -167,22 +167,33 @@ This function is called by `org-babel-execute-src-block'."
|
|||
(defun org-babel-R-assign-elisp (name value colnames-p rownames-p)
|
||||
"Construct R code assigning the elisp VALUE to a variable named NAME."
|
||||
(if (listp value)
|
||||
(let ((transition-file (org-babel-temp-file "R-import-")))
|
||||
(let ((max (apply #'max (mapcar #'length value)))
|
||||
(min (apply #'min (mapcar #'length value)))
|
||||
(transition-file (org-babel-temp-file "R-import-")))
|
||||
;; ensure VALUE has an orgtbl structure (depth of at least 2)
|
||||
(unless (listp (car value)) (setq value (list value)))
|
||||
(with-temp-file transition-file
|
||||
(insert (orgtbl-to-tsv value '(:fmt org-babel-R-quote-tsv-field)))
|
||||
(insert "\n"))
|
||||
(format "if (max(count.fields(\"%s\", sep=\"\\t\")) == min(count.fields(\"%s\", sep=\"\\t\"))) %s <- read.table(\"%s\", header=%s, row.names=%s, sep=\"\\t\", as.is=TRUE) else %s <- read.table(\"%s\", header=%s, row.names=%s, sep=\"\\t\", as.is=TRUE, fill=TRUE, col.names = paste(\"V\", seq_len(max(count.fields(\"%s\", sep=\"\\t\"))), sep =\"\"))"
|
||||
(org-babel-process-file-name transition-file 'noquote)
|
||||
(org-babel-process-file-name transition-file 'noquote)
|
||||
name (org-babel-process-file-name transition-file 'noquote)
|
||||
(if (or (eq (nth 1 value) 'hline) colnames-p) "TRUE" "FALSE")
|
||||
(if rownames-p "1" "NULL")
|
||||
name (org-babel-process-file-name transition-file 'noquote)
|
||||
(if (or (eq (nth 1 value) 'hline) colnames-p) "TRUE" "FALSE")
|
||||
(if rownames-p "1" "NULL")
|
||||
(org-babel-process-file-name transition-file 'noquote)))
|
||||
(insert
|
||||
(orgtbl-to-tsv value '(:fmt org-babel-R-quote-tsv-field))
|
||||
"\n"))
|
||||
(let ((file (org-babel-process-file-name transition-file 'noquote))
|
||||
(header (if (or (eq (nth 1 value) 'hline) colnames-p)
|
||||
"TRUE" "FALSE"))
|
||||
(row-names (if rownames-p "1" "NULL")))
|
||||
(if (= max min)
|
||||
(format "%s <- read.table(\"%s\",
|
||||
header=%s,
|
||||
row.names=%s,
|
||||
sep=\"\\t\",
|
||||
as.is=TRUE)" name file header row-names)
|
||||
(format "%s <- read.table(\"%s\",
|
||||
header=%s,
|
||||
row.names=%s,
|
||||
sep=\"\\t\",
|
||||
as.is=TRUE,
|
||||
fill=TRUE,
|
||||
col.names = paste(\"V\", seq_len(%d), sep =\"\"))"
|
||||
name file header row-names max))))
|
||||
(format "%s <- %s" name (org-babel-R-quote-tsv-field value))))
|
||||
|
||||
(defvar ess-ask-for-ess-directory nil)
|
||||
|
|
Loading…
Reference in a new issue