12

R に詳しくない人にとって非常にユーザーフレンドリーなコードを作成しようとしています。コードは、ユーザーが探しているものに基づいて、論理的な基準を簡単に操作できるように設計されています。そのため、ユーザーに if ステートメント内での作業を強制する代わりに、コードの先頭にある論理ステートメント (つまり ) を含む文字変数を作成したいと思いますx <- "a > 2"

次に、論理演算子を含むその文字変数を使用して if ステートメントを評価したいと思います。基本的な考え方は次のとおりです。

a <- 3
x <- "a > 2"
if(x)TRUE

これは明らかに、引数が論理として解釈できないというエラーを返します。これは、x を文字列 "a > 2" と見なすためです。

私は簡単にできることを知っています:

a <- 3
x <- as.logical(a > 2)
if(x)TRUE

ただし、私が取り組んでいることの場合、最初にこれらの論理ステートメントを文字として格納することが望ましいでしょう。また、 as.logical() は文字を変換できないようです (つまりas.logical("a > 2")) は機能しません。

私の質問: R が x を文字としてではなく、論理ステートメントとして表示できるようにする関数はありますか? つまり、論理ステートメントが if ステートメント内で機能するように、引用符を取り除くにはどうすればよいでしょうか?

4

1 に答える 1

11

使用できますeval(parse(...))

a <- 3
x <- "a > 2"

eval(parse(text=x))
[1] TRUE

x2 <- "a==3"
eval(parse(text=x))
[1] TRUE

ここにドラゴンがいます。

たとえば、次を参照してください。

于 2012-07-23T14:30:58.670 に答える