R表达式中的总和项

时间:2018-11-14 12:53:26

标签: r evaluation

给出一个R表达式,该表达式表示诸如和的项之和

expr <- expression(a + b * c + d + e * f)

我想检索总和的所有项的集合作为列表 名称或表达式。因此,在示例中,元素将为:ab * cde * f

以下内容来自comment

  

项目本身可以包含+运算符,如

expression(a + b * c + d + e * (f + g))
     

所以我们需要对R语言有一定的了解。

是否有一种简单的方法来进行操作,例如使用 pryr 软件包中的call_tree

2 个答案:

答案 0 :(得分:2)

尝试递归解析表达式:

getTerms <- function(e, x = list()) {
  if (is.symbol(e)) c(e, x)
  else if (identical(e[[1]], as.name("+"))) Recall(e[[2]], c(e[[3]], x))
  else c(e, x)
}

expr <- expression(a + b * c + d + e * (f + g))
getTerms(expr[[1]])

给予:

[[1]]
a

[[2]]
b * c

[[3]]
d

[[4]]
e * (f + g)

答案 1 :(得分:2)

您可以使用递归函数对解析树进行爬网:

UICollectionViewDelegateFlowLayout