1. ホーム
  2. r

[解決済み】データフレームから数値列のみを選択する方法

2022-04-07 13:04:47

質問

このようなdata.frameがあったとします。

x <- data.frame(v1=1:20,v2=1:20,v3=1:20,v4=letters[1:20])

xの列のうち、数値のものだけを選択するにはどうしたらよいでしょうか。

どのように解決するのですか?

EDIT: 不用意な使用を避けるために更新されました。 sapply .

データフレームはリストなので、list-apply 関数を使うことができます。

nums <- unlist(lapply(x, is.numeric))  

次に標準的なサブセット

x[ , nums]

## don't use sapply, even though it's less code
## nums <- sapply(x, is.numeric)

よりイディオムなモダンRのために、私は今、次のことをお勧めします。

x[ , purrr::map_lgl(x, is.numeric)]

コード化されておらず、R特有の癖も反映されておらず、よりストレートで、データベースバックエンドのティブルに使用するのに堅牢です。

dplyr::select_if(x, is.numeric)

dplyrの新しいバージョンでは、以下の構文もサポートしています。

x %>% dplyr::select(where(is.numeric))