emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Carsten Dominik <dominik@uva.nl>
To: org-mode list <emacs-orgmode@gnu.org>
Subject: Re: table, calc, reorder and protect calculation in one cell
Date: Sat, 10 Aug 2019 16:09:35 +0200	[thread overview]
Message-ID: <CADn3Z2KDEbbhnPcuVpvY9By3Ni4_RxTSxRvPdP-bbSnYpNMyiw@mail.gmail.com> (raw)
In-Reply-To: <87lfxzx6om.fsf@mat.ucm.es>

[-- Attachment #1: Type: text/plain, Size: 1835 bytes --]

On Mon, Jun 17, 2019 at 11:08 PM Uwe Brauer <oub@mat.ucm.es> wrote:

> >>> "MB" == Michael Brand <michael.ch.brand@gmail.com> writes:
>
> > Hi Uwe
> > On Tue, Jun 11, 2019 at 11:36 AM Uwe Brauer <oub@mat.ucm.es> wrote:
>
> >> Is this behavior possible? When I delete a row or a column, the  TBLFM
> >> is updated, could that be done for reordering?
>
> > You may want to use something like this, (I knew the syntax for ~"$1"~
> > and used the formula debugger ~C-c {~ to find the syntax for
> > ~"(Smith)"~):
>
> > | name   | C1 | C2 | Res |
> > |--------+----+----+-----|
> > | Smith  |  9 |  1 | 1.7 |
> > | Miller |  6 |  2 |   8 |
> > | Adams  |  5 |  5 |  10 |
>
> > #+TBLFM: $4 = if("$1" == "(Smith)", 0.1 * $2 + 0.8 * $3, $3 + $2)
>
> Ha, of course, thanks, why did that occur to me? I am bit surprised by
> the () in Smith, should "Smith" not be sufficient? But it is not indeed,
> how odd?
>

Indeed, this looks very weird.  It has to do with the fact that table
formulas usually deal with numbers and expressions and not with strings.
When replacing $1 in a calc formula, Org adds parenthesis to allow also
algebraic expressions in such formulas.  Consider the following case:

| 2 | 2+3 | 10 |
#+TBLFM: $3=$1*$2

This formula needs to be interpreted as 2 * (2+3).  Without the
parenthesis, it would be read as 2*2+3, which is 7, not 10.
Basically, we need to make sure that whatever is in the field is
interpreted as one entity and not ripped apart by the operator precedence
in calc.  And therefore, indeed, if you want to compare strings, you need
to add the odd-looking parenthesis inside the double quotes.

I guess we should document this.  For lisp formulas, I did document the
variable interpolation, but apparently not for calc syntax.
I will put this into the manual.

Carsten


>
> Anyhow, thanks a lot.
>
> Uwe
>

[-- Attachment #2: Type: text/html, Size: 2777 bytes --]

      reply	other threads:[~2019-08-10 14:09 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-11  9:35 table, calc, reorder and protect calculation in one cell Uwe Brauer
2019-06-17  6:07 ` Michael Brand
2019-06-17 21:06   ` Uwe Brauer
2019-08-10 14:09     ` Carsten Dominik [this message]

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=CADn3Z2KDEbbhnPcuVpvY9By3Ni4_RxTSxRvPdP-bbSnYpNMyiw@mail.gmail.com \
    --to=dominik@uva.nl \
    --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).