小编典典

从数据框中仅选择数字列

all

假设,你有一个这样的 data.frame:

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

您将如何仅选择 x 中的那些数字列?


阅读 121

收藏
2022-06-07

共1个答案

小编典典

编辑:更新以避免使用不明智的sapply.

由于数据框是一个列表,我们可以使用 list-apply 函数:

nums <- unlist(lapply(x, is.numeric), use.names = FALSE)

然后标准子集

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))
2022-06-07