次のような文字列があります
str <- "- var_a + var_c - var_d"
ベクトルの値を変更したいvec
vec <- c(var_a=0, var_b=0, var_c=0, var_d=0, var_e=0)
vec
var_a var_b var_c var_d var_e
0 0 0 0 0
によるとstr
:変数に負の符号がある場合は常に、対応するエントリvec
を-1に設定し、正の符号が1にある場合は、次のようにします。私の望ましい出力は次のようになります。
var_a var_b var_c var_d var_e
-1 0 1 -1 0
私の考えは、のすべての名前をループしてvec
、正規表現を使用して対応する記号を抽出しようとするstr
ことでしたが、記号を取得する方法がよくわかりません。たとえば、どのlapply(names(vec), grepl, str)
変数が文字列に含まれているかしかわかりません.
またはなど、もっと簡単な方法はありませんformula
かexpression
?パッケージも見ましたが、Ryacas
必要なものが見つかりませんでした。