私は、指定された関数のデフォルトを読み込む関数をRで作成しようとしています。これを行うために、私は関数に引数args
を使用しており、関数のデフォルトの引数に分解し、それらをグローバル環境にロードしようとしています。これには少しの正規表現が必要で、これにぶつかって私は問題に取り組んでいます。ここで 正規表現括弧ではなくカンマを選択
myFunc <- function(a = 1, b = "hello world", c = c("Hello", "World")) {}
:しかし
x <- "a = 1, b = \"hello world\", c = c(\"Hello\", \"World\")"
、私は関数の引数を分割する上で苦労していますアップ。私はカンマで区切りたいと思いますが、デフォルトの中にカンマを持つ関数の引数(c
のように)があると、問題が発生します。私が考えているのは、コンマにマッチする正規表現を呼び出す方法があり、2つのかっこの間のコンマではない場合は、strsplit
を使用して、自分が望むものを得ることができるということです。 2つの括弧の間にコンマの場合に一致するように
私の試みは次のようになります。
今\\(.*,.*\\)
、私は上記のものを行う方法に見てきたし、それが先かもしれない負の表情のように思えます私が必要とするものなので、私はこのようなことをしようとしました。
splitx <- strsplit(x, "(?!\\(.*,.*\\)(,)")
しかし、Rは違法な正規表現だと言います。引数にperl = TRUE
を設定すると、同じ文字列が返されます。ここのお手伝いが大変ありがとうと思います。
PCRE regex - ['strsplit(x、" \\([^)] + \\)(* SKIP)(*、 "、perl = TRUE)']を使うと、 (http://ideone.com/Cw6U5n)。ただし、ここでは正規表現で盲目の路地に向かないことを確認してください。 –
あなたの質問はあなたが直面している問題よりもはるかに広い範囲を持っています。 'match.call()によってあなたの目標をより速く得ることができると私が提案するならば、私は短絡しますか? –
いくつかの検索で詳細がわかりますが、ここから始めることができます:http://stackoverflow.com/questions/14397364/match-call-with-default-arguments –