5.7 对符合条件的列操作

# 数值型变量的列的位置
which(sapply(iris, is.numeric))
## Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
##            1            2            3            4
iris[,sapply(iris, is.numeric), with = F][Sepal.Length > 7.5]
##    Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1:          7.6         3.0          6.6         2.1
## 2:          7.7         3.8          6.7         2.2
## 3:          7.7         2.6          6.9         2.3
## 4:          7.7         2.8          6.7         2.0
## 5:          7.9         3.8          6.4         2.0
## 6:          7.7         3.0          6.1         2.3
class(iris)
## [1] "data.table" "data.frame"

用 magrittr 提供的管道符号连接 data.table 的数据操作与 ggplot2 的数据可视化

library(ggplot2)
iris %>%
  as.data.table(.) %>%
  .[Species == "setosa"] %>% # 行过滤
  .[Sepal.Length > 5.5] %>% # 行过滤
  .[, mget(grep("Sepal", colnames(.), value = TRUE))] %>% # 列过滤
  # .[, grepl("Sepal", colnames(.)), with = FALSE] %>%
  ggplot(aes(x = Sepal.Length, y = Sepal.Width)) + # 绘图
  geom_point()