0

文字列を使って論理演算を実行したい(はい、このようにしたいです)

a = data.frame(x=c(1,2,3,4),y=c(11,12,13,14))
logical_text = "a$x!=2 & a$y!=14"

a
> a
  x  y
1 1 11
2 2 12
3 3 13
4 4 14

次のように文字列を使用したいと考えています

  a[logical_text,]
> a[logical_text,]
    x  y
NA NA NA

以下と同じ結果を得るには:

a[a$x!=2 & a$y!=14,]
> a[a$x!=2 & a$y!=14,]
  x  y
1 1 11
3 3 13
4

1 に答える 1

6

このようにすることは必ずしも良い考えではありません。しかし、本当に必要な場合はeval(parse(text = your_command_as_a_string_here))、文字列をコードであるかのように評価するために使用できます

a = data.frame(x=c(1,2,3,4),y=c(11,12,13,14))
logical_text = "a$x!=2 & a$y!=14"

# Evaluate logical_text into a temporary logical variable
logical_output <- eval(parse(text = logical_text))
a[logical_output,]
#  x  y
#1 1 11
#3 3 13

# Same thing but without storing as a temporary variable.
a[eval(parse(text=logical_text)), ]
#  x  y
#1 1 11
#3 3 13
于 2012-08-18T00:23:18.750 に答える