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

如何在R的data.table中筛选名称为整数的列?

data.table筛选整数名称列的解决办法

先看你的示例数据:

dd <- data.table(a= 1:3, `1990` = 4:6, `1991` = 7:9, `1992` = 10:12)

你提到在data.frame里用dd[,as.character(1990:1992)]能直接筛选出名称为1990-1992的列,但这套写法在data.table里失效,dd[,.(1990:1992)]也不行,这里给你几个贴近data.frame思路的解决方案:

1. 使用with=FALSE参数(最贴近data.frame写法)

data.table默认会把方括号内的j表达式当成数据内部的变量处理,加上with=FALSE后,就会和data.frame一样,把括号里的内容当作列名索引来解析:

dd[, as.character(1990:1992), with = FALSE]

2. 使用..前缀引用列名向量

..是data.table的特殊语法,代表"从上层环境引用变量",可以直接把列名向量传给它:

# 先定义列名向量再引用
cols <- as.character(1990:1992)
dd[, ..cols]

# 也可以直接内联写法
dd[, ..(as.character(1990:1992))]

3. 使用.SDcols参数

通过.SDcols指定要保留的列,再返回.SD(即筛选后的数据集),新版本的data.table也支持直接省略.SD:

# 完整写法
dd[, .SD, .SDcols = as.character(1990:1992)]

# 简化写法(data.table 1.14.0+支持)
dd[, .SDcols = as.character(1990:1992)]

内容的提问来源于stack exchange,提问作者user436994

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:32:09