Generally, this often happens with 0 or NA values. NA should be used in recording non-observations, and 0 when recording observations of zero.
Specifically, the all-zero case is expected to result in singularities.
X <- data.frame(gene = c("Gene1","Gene2"),
Individual1 = c(77.9,89.7),
Individual2 = c(67.5,14.8),
Individual3 = c(0,0)
)
X[, colSums(X != 0) > 0]
#> gene Individual1 Individual2
#> 1 Gene1 77.9 67.5
#> 2 Gene2 89.7 14.8
Created on 2020-09-20 by the reprex package (v0.3.0.9001)