我正在尝试从矩阵中删除所有colSums !=0
列。使用this post,我已经接近了。
data2<-subset(data, Gear == 20) #subset off larger data matrix
i <- (colSums(data2[,3:277], na.rm=T) != 0) #column selection in this line limits to numeric columns only
data3<- data2[, i] #select only columns with non-zero colSums
这将创建一个向量i,该向量使用逻辑True / False正确标识要删除的列。但是,最后一行是通过除我有意的如果为true则包含,如果为false则排除以外的其他逻辑删除列。
目标:删除该范围内所有具有colSums == 0
的列。
问题:我当前的代码似乎无法正确识别所述列
关于我失踪的建议?
更新: 添加要使用的伪数据:
a<-matrix(1:10, ncol = 10,nrow=10)
a
a[,c(3,5,8)]<-0
a
i <- (colSums(a, na.rm=T) != 0)
b<- a[, i]
它在这里工作良好,所以我不确定为什么它不能在实际数据上面工作。
答案 0 :(得分:1)
我们可以从colSums
中获取列名,并将其与前两个列名连接,而前两个列名并没有用colSums
创建条件来选择感兴趣的列
data[c(names(data)[1:2], names(which(i1)))]