2016-05-19 8 views
3

私は次のコードを期待します。をtbl_dfに入れます "variable"で始まるすべての列を除外します。これは基本的cars一致がないときに空のデータフレームを取得しないようにするにはどうすればよいですか?

tbl_df(cars) %>% 
select(-starts_with("variable")) 

を返すために、私が代わりに空のデータセットの車を取得するために、この機能を調整することができます方法はありますか? 私がこの明らかに無意味な操作をしている理由は、関数が、variableで始まる列が存在していてもいなくてもよいループでネストされているからです。

答えて

2

たぶん、以前の表現で可能なすべての列mentionningによって:G.Grothendieckの返信@統合

tbl_df(cars) %>% select(1:ncol(.), -starts_with("variable")) 
+0

を、私の代わりに '1の')( 'すべてを示唆しています:ncol(。) ' – Dambo

+0

私はちょうど言ったことを取り戻します。「すべて」はこの例では動作しますが、元のスクリプトでは動作しません。したがって、' 1:ncol() 'はより一般的な解決方法です。 – Dambo

+0

@Dambo、 'everything()'は私が試したすべての例で動作します。あなたはそれがうまくいかない再現可能な例を提供できますか? –

2

setdiffをお試しください:

# this returns all columns 
tbl_df(cars) %>% select(setdiff(everything(), starts_with("variable"))) 

# this returns all columns except the "dist" column 
tbl_df(cars) %>% select(setdiff(everything(), starts_with("dist"))) 
関連する問題