【发布时间】:2015-03-21 14:11:37
【问题描述】:
我有一个包含一堆列的数据表,例如:
dt<-data.table(matrix(runif(10*10),10,10))
我想对数据表进行一些操作,比如生成一个相关矩阵(cor(dt))。为此,我想删除一些包含非数字值或超出特定范围的值的列。
假设我想找到不包括 V1、V2、V3 和 V5 的相关矩阵。
这是我目前的做法:
cols<-!(colnames(dt)=="V1" | colnames(dt)=="V2" | colnames(dt)=="V3" | colnames(dt)=="V5")
new_dt<-subset(dt,,cols)
cor(new_dt)
考虑到 data.table 语法通常如此优雅,我觉得这很麻烦。有没有更好的方法来做到这一点?
【问题讨论】:
-
您可以使用
%in%,而不是==。!colnames(dt) %in% paste0('V', c(1:2,3,5))
标签: r data.table