I have a data frame (df) with numerical values. I would like to write a for loop that iterates through the columns. For each column, I want it to count the number of rows that have values above a number, say 3, then I want it to delete those rows entirely before moving to the next column.
This is what I tried so far:
output <- vector("double", ncol(df))
for (i in 1:ncol(df)){
output[[i]] <- length(which(df[i] >= 3))
df <- df[!df[,i] >= 3, ]
}
But I get the following error:
Error in matrix(if (is.null(value)) logical() else value, nrow = nr, dimnames = list(rn, : length of 'dimnames' [2] not equal to array extent
dput(head(df))
#output:
structure(list(col1 = numeric(0), col2 = numeric(0), (etc.)
NA. = integer(0)), row.names = integer(0), class = "data.frame")
col1 col2 col3 col4 col5
1 2.09 1.10 0 21.03 0.88
3 0.00 0.00 0 11.71 0.00
4 1.50 1.10 0 1.67 1.76
5 5.10 0.00 0 0.83 17.94
6 0.00 6.34 0 2.10 0.00
In the example above, the final output I am interested in is a vector with the number of rows deleted per column: (1,1,0,2,0).