You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R data.table中选择含特定字符或指定类型的列

用data.table实现tidyverse的列筛选需求

下面分别给出对应两种tidyverseselect操作的data.table实现方法:

1. 选择列名包含"cases"的列

对应tidyverse代码:

df <- df |> select(contains("cases"))

data.table实现方式:

方法一:直接在选列时匹配

# 假设你的data.table对象名为DT
DT <- DT[, grep("cases", names(DT), value = TRUE), with = FALSE]
  • grep("cases", names(DT), value = TRUE):返回所有列名中包含"cases"的字符串向量
  • with = FALSE:告诉data.table将该向量视为列名进行选择

方法二:先存列名再引用(更简洁)

cols_to_keep <- grep("cases", names(DT), value = TRUE)
DT <- DT[, ..cols_to_keep]
  • ..cols_to_keep是data.table特有语法,表示引用上层环境中的cols_to_keep变量,直接选择这些列

2. 选择所有数值型列

对应tidyverse代码:

df <- df |> select(where(is.numeric))

data.table实现方式:

方法一:先筛选数值型列名

numeric_cols <- names(DT)[sapply(DT, is.numeric)]
DT <- DT[, ..numeric_cols]

方法二:直接用.SD判断

DT <- DT[, which(sapply(.SD, is.numeric)), with = FALSE]
  • .SD是data.table的特殊符号,代表当前对象的所有列
  • sapply(.SD, is.numeric):返回每列是否为数值型的逻辑向量
  • which():将逻辑向量转换为列的索引,with = FALSE按索引选择列

内容的提问来源于stack exchange,提问作者B.M Njuguna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:43:21