gpt4 book ai didi

r - 在data.table中选择列的子集

转载 作者:行者123 更新时间:2023-12-03 10:32:38 24 4
gpt4 key购买 nike

我想打印数据表dt的所有列,除了其中一个名为V3的列之外,但不想按编号而是按名称来引用它。这是我的代码:

  dt = data.table(matrix(sample(c(0,1),5,rep=T),50,10))
dt[,-3,with=FALSE] # Is this the only way to not print column "V3"?

使用 data frame方式,可以通过以下代码完成此操作:
  df = data.frame(matrix(sample(c(0,1),5,rep=T),50,10))
df[,!(colnames(df)%in% c("X3"))]

因此,我的问题是:是否有另一种方法可以不打印数据表中的一列而无需按数字引用呢?我想找到与我上面使用数据表语法类似的东西。

最佳答案

使用与data.frame非常相似的语法,但添加参数with=FALSE:

dt[, setdiff(colnames(dt),"V9"), with=FALSE]
V1 V2 V3 V4 V5 V6 V7 V8 V10
1: 1 1 1 1 1 1 1 1 1
2: 0 0 0 0 0 0 0 0 0
3: 1 1 1 1 1 1 1 1 1
4: 0 0 0 0 0 0 0 0 0
5: 0 0 0 0 0 0 0 0 0
6: 1 1 1 1 1 1 1 1 1
with=FALSE中的 j参数的文档中很好地解释了 ?data.table的使用:

j:单个列名称,单个列名称的expresson,列名称的表达式的 list(),计算结果为列表的表达式或函数调用(也包括列表的 data.framedata.table),或(当 with=FALSE时)与j in相同 [.data.frame

从v1.10.2开始,也可以按照以下步骤进行操作:
keep <- setdiff(names(dt), "V9")
dt[, ..keep]

使用 ..前缀符号将在调用范围(即“全局环境”)中查找,其值将用作列名或数字( source)。

关于r - 在data.table中选择列的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11940605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com