我有一个包含一堆列的数据表,例如:
dt<-data.table(matrix(runif(10*10),10,10))
Run Code Online (Sandbox Code Playgroud)
我想对数据表执行一些操作,例如生成相关矩阵(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)
Run Code Online (Sandbox Code Playgroud)
考虑到data.table语法通常很优雅,我发现这非常麻烦.有没有更好的方法呢?
我想打印数据表的所有列,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"?
Run Code Online (Sandbox Code Playgroud)
使用这种data frame方式,可以通过代码执行此操作:
df = data.frame(matrix(sample(c(0,1),5,rep=T),50,10))
df[,!(colnames(df)%in% c("X3"))]
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:是否有另一种方法不在数据表中打印一列而不必按编号引用它?我想找到类似于我上面使用的数据帧语法但使用数据表的东西.