find_terms_JPH {lazy.symbolic} | R Documentation |
式を項(+ または - で区切られた項)に分解
Description
英語のヘルプファイルは: find_terms
Arguments
expr |
式の文字列(スカラー、ベクトル、または行列) |
markso |
= 0 の場合は特殊演算子をマークしない |
sort |
= 1 の場合は項を名前順にソート |
debug |
= 1 の場合は中間結果を表示 |
Details
i 番目の項は、前置演算子付きで次のように得られます: substr( expr0, fromto[i,1], fromto[i,2] ) ここで expr0 は空白を圧縮した式です。 i 番目の項に対応する前置演算子は oper[i] です。 元の式は次のいずれかの方法で再構成できます:
res <- find_terms( expr ) expr <- paste( mapply( paste, res$oper, res$term, sep="" ), collapse="" )
または
expr <- paste( paste( res$oper, res$term, sep="" ), collapse="" )
または
expr <- paste( apply(res$tab,1, function(x){paste(x,collapse="")} )
, collapse="")
不均衡な括弧がある場合は無視されますが、valid フラグに記録されます。
項を名前順にソートすることも可能です:
res <- find_terms("c-a+d-b", sort=1) exprs <- paste( paste( res$oper, res$term, sep="" ), collapse="" )
Value
リストを返します。内容は以下の通りです:
項数(nterms)、
演算子のベクトル(oper)、
項のベクトル(term)、
各 oper+term の位置(fromto)、
演算子と項の行列(tab)、
各項の有効フラグ(valid)、
入力式が再構成されたものと等しい場合の ok フラグ(ok=1)。
Examples
res = find_terms( "-((a)) - c + ((a)+(b)) + (a-b) + 1 - (x-y)*(((z+1)))" )
paste( apply(res$tab,1, function(x){paste(x,collapse="")} ), collapse="")
find_terms("-a")
find_terms("x*a/(1-y)")
find_terms("-a+b-0")
find_terms("(A%p%B)%*%C-D%*%diag(X) %m% E")
find_terms(Simplify("-a+b-0"))
find_terms("(((b)+c")
find_terms(")*c+5")
[Package lazy.symbolic version 1.0.0.20250830 ]