我有一个矩阵的观察数和矩阵数,我想删除所有零列,然后我尝试使用 nearZeroVar(dataset)。
removeColumns <-nearZeroVar(datset) # remove zeros
testT <- datset[, -removeColumns]
但是还有另一种方法是
removeZeros <- apply(dataset, 2, function(x) length(unique(x)) == 1)
dataset<- datset[, !removeZeros];
它在小向量中给了我相同的结果,
mdat <- matrix(c(1,2,3,0,4,5, 0,0,0,0, 0,0,3,0,0,0,0,0,0,0,1,2,3,0), nrow = 6, ncol = 4, byrow = TRUE)
"
[,1] [,2] [,3] [,4]
[1,] 1 2 3 0
[2,] 4 5 0 0
[3,] 0 0 0 0
[4,] 3 0 0 0
[5,] 0 0 0 0
[6,] 1 2 3 0
"
cols_mdat <-nearZeroVar(mdat)
"4"
mdat_remove <-mdat[,-cols_mdat]
"[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 0
[3,] 0 0 0
[4,] 3 0 0
[5,] 0 0 0
[6,] 1 2 3
"
mdatzv <- apply(mdat, 2, function(x) length(unique(x)) == 1);
mdat_nzv <- mdat[, !mdatzv];
"
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 0
[3,] 0 0 0
[4,] 3 0 0
[5,] 0 0 0
[6,] 1 2 3
"
但在我的数据集中,有 785 个特征和大约 4200 个观察值,它返回不同数量的特征。
你能告诉我这两种方式有什么区别吗?