给出一个R表达式,该表达式表示诸如和的项之和
expr <- expression(a + b * c + d + e * f)
我想检索总和的所有项的集合作为列表
名称或表达式。因此,在示例中,元素将为:a
,b * c
,d
和e * f
。
以下内容来自comment。
项目本身可以包含
+
运算符,如expression(a + b * c + d + e * (f + g))
所以我们需要对R语言有一定的了解。
是否有一种简单的方法来进行操作,例如使用 pryr 软件包中的call_tree
?
答案 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