【发布时间】:2013-06-21 17:09:56
【问题描述】:
我有很多类似这样的公式字符串:
str <- "( (( A ) * J ) - (( J ) * G ) ) / Z "
有很多括号是不需要的,(A*J - J*G)/Z 就足够了。 R中是否有可以解决这个问题的函数或包?
我尝试了 R 表达式和 as.formula 的函数,但没有找到我需要的。
【问题讨论】:
-
不确定,但请尝试以下操作:
gsub("\\(([[:alnum:]]+)\\)", "\\1", gsub(" ", "", str))。逻辑: 1) 删除所有spaces,两个查找所有(),如果有连续的characters+numerals,则删除paranthesis,否则什么都不做。如果它测试良好,您可以将其写下来作为答案并标记。 -
这至少删除了 A 和 J 周围的括号:
"((A*J)-(J*G))/Z",谢谢! -
确定我忽略了一些东西。现在明白了。
-
在一般情况下,我对此表示怀疑。您可以使用 @Arun 的方法来查找冗余的“配对”集合,例如
((foo+(bar)))但由于您的示例中的J很容易成为某个表达式,如果您不将其从G,您如何确定哪些单组括号可以安全删除? -
出于好奇(因为它可能会帮助您获得更好的答案),为什么?我不认为 R 的函数使用公式,如
lm或model.matrix,关心是否有额外的括号。
标签: string r formula parentheses