The vector a
looks like it is all ones, is numeric, but somehow there are elements not equal to 1. I created it with colSums
of a dataframe where I had normalized the columns.
> taxa_abundance =
+ taxa_counts %>%
+ ### remember to avoid non-numeric columns
+ mutate_if(is.numeric, funs(./sum(.))) %>%
+ ### remember to avoid non-numeric columns
+ mutate(rowmean = apply(select_if(.,is.numeric), 1, mean))
> # mutate(rowmean = apply(select(., sample_names), 1, mean))
>
> ### Can do a sanity check:
> a = taxa_abundance %>%
+ select_if(is.numeric) %>%
+ select(-rowmean) %>%
+ colSums() %>%
+ as.numeric() %>% c()
>
> print(a)
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[39] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[77] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[115] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
>
> print(class(a))
[1] "numeric"
>
> print(typeof(a))
[1] "double"
>
> print(any(a != 1))
[1] TRUE
> a != 1
[1] FALSE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE
[14] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE
[27] FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[40] TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE
[53] TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[66] TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[79] TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE FALSE TRUE TRUE
[92] TRUE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE
[105] TRUE TRUE FALSE FALSE FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE
[118] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[131] TRUE FALSE TRUE FALSE TRUE TRUE TRUE FALSE FALSE TRUE TRUE
Is there a sensible and clean way to do the operation I'm trying to do?