動作は次のとおりです。
> d <- tbl_df(data.frame(xxx = 1:2, yyy = 1:2, bxx = 1:2, bbb = 1:2))
> d %>% select(starts_with('nonsense'))
Source: local data frame [2 x 4]
xxx yyy bxx bbb
1 1 1 1 1
2 2 2 2 2
> d %>% select(ends_with('nonsense'))
Source: local data frame [2 x 4]
xxx yyy bxx bbb
1 1 1 1 1
2 2 2 2 2
> d %>% select(matches('nonsense'))
Source: local data frame [2 x 4]
xxx yyy bxx bbb
1 1 1 1 1
2 2 2 2 2
> d %>% select(contains('nonsense'))
Source: local data frame [2 x 4]
xxx yyy bxx bbb
1 1 1 1 1
2 2 2 2 2
明らかに、select関数はデータフレーム内のすべての列を返す必要はありません。 役立つメッセージとともにエラーをスローするか、空のデータフレームを返す必要があります。 どちらが望ましいかわかりません。
私が見ることができることから、問題はselect_vars_q
関数のselect_funs
と呼ばれる関数のリストにあります。 そこでエラーをキャッチし、それに応じて何を返すかを決定する必要があります。 プルリクエストを送信できれば幸いですが、最も適切な戻り値が何であるかを聞かずに仕事をしたくはありません:)
「列の選択に失敗しました」などのエラーがスローされるはずだと思います。 また、 select(mtcars, -(mpg:carb))
ようなケースを処理する必要があります。
涼しい。 プルリクエストは1週間ほどで送信します。 休日のATMで。
これが関連する問題であるかどうかはわかりませんが、次の点で一貫性がないようです。
> data_frame(a=1, ba=1) %>% select(starts_with("a"), ends_with("b")) %>% names
character(0)
>
> data_frame(a=1, ab=1) %>% select(starts_with("a"), ends_with("b")) %>% names
[1] "a" "ab"
最も参考になるコメント
これが関連する問題であるかどうかはわかりませんが、次の点で一貫性がないようです。