Если я понял ваш вопрос / цель, следующее даст результаты, которые вы ищете.Он использует пакет plyr поверх пакета dplyr.Скорее всего, вы столкнетесь с проблемами при использовании функции%>% с do.call, поскольку%>% - это просто ярлык для передачи предыдущего объекта в качестве первого аргумента последующей функции, а do.call ожидает именованную функциюв качестве первого аргумента
library(plyr)
df <- data.frame(group = rep(1:4, each = 10),
x1 = rnorm(40), x2 = rnorm(40), x3 = rnorm(40), x4 = rnorm(40),
X5 = rnorm(40), x6 = rnorm(40), x7 = rnorm(40))
ddply(df,.(group),function(x)
{
sapply(x[,4:ncol(x)],function(y) sd(y)/mean(y))
})
Дает следующие результаты
group x3 x4 X5 x6 x7
1 1 1.650401 -1.591829 1.509770 6.464991 3.520367
2 2 11.491301 -2.326737 -1.725810 -11.712510 2.293093
3 3 -3.623159 -1.416755 2.958689 1.629667 -4.318230
4 4 9.169641 -4.219095 2.083300 1.985500 -1.678107