On 29/10/2019 12:46 p.m., Bert Gunter wrote:
Does something like the following make any sense for your context?
z <- "(xy+ s)/ (ab +log(4.13))"
lapply(parse(text = z), FUN = function(x)strsplit(deparse(x), split =
"[[:space:]]+"))
[[1]]
[[1]][[1]]
[1] "(xy" "+" "s)/(ab" "+" "log(4.13))"
That's the wrong way to do it. Notice the 3rd element, "s)/(ab", which
combines two partial operands and an operator. Deparsing doesn't always
introduce spaces, as your reprex assumes.
I think Witold's request is quite hard to do. The right way to handle
expressions is as hierachical objects, like those returned from
parse(text = z). Turning those into character vectors of lexical tokens
doesn't make sense.
Perhaps if Witold explained the context of what he is trying to do
someone could give a suggestion about a better approach.
Duncan Murdoch
Cheers,
Bert
Bert Gunter
"The trouble with having an open mind is that people keep coming along and
sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
On Tue, Oct 29, 2019 at 9:23 AM Ivan Krylov <krylov.r...@gmail.com> wrote:
On Tue, 29 Oct 2019 13:55:27 +0100
Witold E Wolski <wewol...@gmail.com> wrote:
Since R knows how to parse expressions these type of expressions I
would like to reuse some existing functions and not to use gsub or
strsplit etc.
You might be interested in the `parse` function:
x <- "(a+b) * c/(d * (e - f))"
str(parse(text = x))
# length 1 expression((a + b) * c/(d * (e - f)))
# - attr(*, "srcref")=List of 1
# ..$ : 'srcref' int [1:8] 1 1 1 23 1 23 1 1
# .. ..- attr(*, "srcfile")=Classes 'srcfilecopy', 'srcfile'
<environment: 0x55ebecdac210>
# - attr(*, "srcfile")=Classes 'srcfilecopy', 'srcfile'
<environment:0x55ebecdac210>
# - attr(*, "wholeSrcref")= 'srcref' int [1:8] 1 0 2 0 0 0 1 2
# ..- attr(*, "srcfile")=Classes 'srcfilecopy',
'srcfile'<environment:0x55ebecdac210>
parse(text = x)[[1]]
# (a + b) * c/(d * (e - f))
parse(text = x)[[1]][1]
# `/`()
parse(text = x)[[1]][2]
# ((a + b) * c)()
parse(text = x)[[1]][3]
# (d * (e - f))()
Quoting ?expression,
As an object of mode ‘"expression"’ is a list, it can be subsetted
by ‘[’, ‘[[’ or ‘$’, the latter two extracting individual calls etc.
--
Best regards,
Ivan
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
[[alternative HTML version deleted]]
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.