我想打印数据表的所有列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"))]
所以,我的问题是:是否有另一种方法可以不打印数据表中的一列,而无需按数字引用它?我想找到类似于我上面使用的数据框语法但使用数据表的东西。
使用与 a 非常相似的语法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:单个列名,列名的单个表达式,list()
列名表达式、计算结果为列表的表达式或函数调用(包括data.frame
and data.table
也是列表),或者(当with=FALSE
) 与 j 相同[.data.frame
.
From v1.10.2以后也可以按如下方式执行此操作:
keep <- setdiff(names(dt), "V9")
dt[, ..keep]
符号前缀为..
将在调用范围(即全局环境)中查找,其值取为列名或数字(source https://github.com/Rdatatable/data.table/blob/master/NEWS.md#new-features-1).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)