Say I have the following data:
colA <- c("SampA", "SampB", "SampC")
colB <- c(21, 20, 30)
colC <- c(15, 14, 12)
colD <- c(10, 22, 18)
df <- data.frame(colA, colB, colC, colD)
df
#    colA colB colC colD
# 1 SampA   21   15   10
# 2 SampB   20   14   22
# 3 SampC   30   12   18
I want to get the row means and standard deviations for the values in columns B-D.
I can calculate the rowMeans as follows:
library(dplyr)
df %>% select(., matches("colB|colC|colD")) %>% mutate(rmeans = rowMeans(.))
#   colB colC colD   rmeans
# 1   21   15   10 15.33333
# 2   20   14   22 18.66667
# 3   30   12   18 20.00000
But when I try to calculate the standard deviation using sd(), it throws up an error.
df %>% select(., matches("colB|colC|colD")) %>% mutate(rsds = sapply(., sd(.)))
Error in is.data.frame(x) : 
  (list) object cannot be coerced to type 'double'
So my question is: how do I calculate the standard deviations here?
Edit: I tried sapply() with sd() having read the first answer here.
Additional edit: not necessarily looking for a 'tidy' solution (base R also works just fine).
 
     
     
     
     
     
     
     
    