Removing the "" in the matrix in R in order to work with rows with non empty elements for a list -
i have matrix called: combination_mat
, looks this:
combination_mat <- read.csv("data.csv")
combination_mat <- as.matrix(na.omit(combination_mat))
combination_mat
x1 x2 x3 x4 1 "ff" "wgs10yr" "wtb3ms" "stlfsi" 2 "ff" "wgs10yr" "stlfsi" "" 3 "wgs10yr" "wtb3ms" "stlfsi" "" 4 "ff" "wtb3ms" "stlfsi" "" 5 "ff" "wgs10yr" "wtb3ms" "" 6 "ff" "wtb3ms" "" "" 7 "ff" "stlfsi" "" "" 8 "wgs10yr" "stlfsi" "" "" 9 "wgs10yr" "wtb3ms" "" "" 10 "ff" "wgs10yr" "" "" 11 "stlfsi" "wtb3ms" "" "" 12 "ff" "" "" "" 13 "wgs10yr" "" "" "" 14 "wtb3ms" "" "" "" 15 "stlfsi" "" "" ""
however, after using lapply()
looping each row, end list elements , emplty elements e.g. ""
.
the result looking looks this:
combination_mat
x1 x2 x3 x4 1 "ff" "wgs10yr" "wtb3ms" "stlfsi" 2 "ff" "wgs10yr" "stlfsi" 3 "wgs10yr" "wtb3ms" "stlfsi" 4 "ff" "wtb3ms" "stlfsi" 5 "ff" "wgs10yr" "wtb3ms" 6 "ff" "wtb3ms" 7 "ff" "stlfsi" 8 "wgs10yr" "stlfsi" 9 "wgs10yr" "wtb3ms" 10 "ff" "wgs10yr" 11 "stlfsi" "wtb3ms" 12 "ff" 13 "wgs10yr" 14 "wtb3ms" 15 "stlfsi"
some links searched: remove spaces cells in matrix r: data.frame rows list remove empty elements string array
thanks!
you can't keep data matrix/ data.frame whilst removing elements, columns of matrix have different lengths. there couple of ways of dealing it.
method 1: (frank's comment) convert matrix list , remove of elements, access elements of list if columns of matrix:
m = matrix(c("a","b","c",""),2,2) apply(m,1,function(x) x[x!=""])
method 2: keep matrix form of result, convert ""
entries na
, filter them later calculations.
m = matrix(c("a","b","c",""),2,2) m[m == ""] <- na
Comments
Post a Comment