2016-07-06 5 views
0

ベクトルfl <- c("virginica","setosa")の値に基づいて%in%演算子を使用してirisをフィルタリングしたいとします。%in%演算子を使って動的にフィルターする方法は?

I言い換えれば、

tbl_df(iris) %>% 
    filter_('Species %in% c("virginica","setosa")') 

のようなものが、このコードは、光沢のあるアプリで行きますとflが動的に生成されるので、私はむしろ値を手動で入力するよりも、私の以前のスクリプトにflを渡す必要があります。

+1

おそらく 'http://isackoverflow.com/a/26509961/3358272 – r2evans

+0

で答えるだけです' iris%>%filter(%flの種%) '、いいえ?列名を文字列として渡さない限り、SE関数(\ * whew \ *)は必要ありません。 – alistaire

+0

OPは列が動的であることを望んでいるので、残念ながらそれはありません。 – r2evans

答えて

0

編集:。私は、それは別の問題とあなたのコードで、おそらくバグですSQLから引っ張ったとき、あなたはfilter_機能を使用するために持っているか、それが壊れる、というコメントに基づいて、これをアンデリート、おそらくよ@ alistaireのコメントはうまくいきますが、最初に誤って推測したように列を動的に選択する必要がある場合は、このようなものが必要になります。拡張ほどに答える)

ここに示されているように:。https://stackoverflow.com/a/26509961/3358272、代わりに%in%を使用して:

cn <- "Species" 
fl <- c("virginica", "setosa") 
filt <- lazyeval::interp(~ col %in% fl, col = as.name(cn)) 
tbl_df(iris) %>% filter_(filt) 
# Source: local data frame [100 x 5] 
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
#   <dbl>  <dbl>  <dbl>  <dbl> <fctr> 
# 1   5.1   3.5   1.4   0.2 setosa 
# 2   4.9   3.0   1.4   0.2 setosa 
# 3   4.7   3.2   1.3   0.2 setosa 
# 4   4.6   3.1   1.5   0.2 setosa 
# 5   5.0   3.6   1.4   0.2 setosa 
# ..   ...   ...   ...   ...  ... 
関連する問題