大きな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)))
}
送信された検索文字列をすべてピックアップして検索番号を表示しますが、検索が適切ではありません。