1

大きなdata.tableから次のサンプルデータがあります。

ddf = structure(list(id = 1:5, country = c("United States of America", 
 "United Kingdom", "United Arab Emirates", "Saudi Arabia", "Brazil"
 ), area = c("North America", "Europe", "Arab", "Arab", "South America"
 ), city = c("first", "second", "second", "first", "third")), .Names = c("id", 
 "country", "area", "city"), class = c("data.table", "data.frame"
 ), row.names = c(NA, -5L))

ddf
   id                  country          area   city
1:  1 United States of America North America  first
2:  2           United Kingdom        Europe second
3:  3     United Arab Emirates          Arab second
4:  4             Saudi Arabia          Arab  first
5:  5                   Brazil South America  third
> 

可変数のテキスト引数を送信できる関数を作成する必要があり、関数はデータに対して AND 検索を実行し、すべてのテキスト検索引数を持つすべての行を出力する必要があります。異なる検索文字列を異なる列に入れることができます。

たとえば、searchfn(ddf, 'brazil','third') は最後の行のみを出力する必要があります。

ケースは無視する必要があります。

データが大きいため、検索は高速で速度を最適化する必要があります (したがって、data.table を使用します)。

私は試した:

searchfn = function(ddf, ...){
    ll = list(...)
    print(sapply(ll, function(x) grep(x, ddf, ignore.case=T)))
}

送信された検索文字列をすべてピックアップして検索番号を表示しますが、検索が適切ではありません。

4

1 に答える 1