Я хотел бы проанализировать строку символов, например
s <- "I(log(x1)+myfunc(x2,1:3))"
, в список, подобный
list(I = list( log = "x1",
"+",
myfunc = list("x2", "1:3")
)
)
, т. Е.
$I
$I$log
[1] "x1"
$I[[2]]
[1] "+"
$I$myfunc
$I$myfunc[[1]]
[1] "x2"
$I$myfunc[[2]]
[1] "1:3"
Как можно написатьфункция для этого преобразования?Любые ресурсы будут высоко оценены.
Редактировать
Во-вторых, у меня иногда есть что-то вроде "I(log(x1)+log(x2))"
, в этом случае "log"
не может бытьимя для двоих.Когда этого не происходит, возможно, отправной точкой является strsplit, сохраняющий разделители.
tokens <- strsplit(x,'(?=[\\(\\),\\+\\-\\*/(\\s+)])', perl = TRUE)