Во-первых, давайте соберем все ваши нормы в единый список:
normlist<-lapply(paste0("norm",1:31),get)
Теперь мы можем использовать lapply
, чтобы выполнить свою задачу для каждой из норм:
thing<-function(x) {x %>% group_by(ID_Pair) %>%
summarize(Norm_avg_PCK=mean(ID_avg_PCK,na.rm=T),
Norm_avg_BT=mean(ID_avg_BT, na.rm=T))}
lapply(normlist,thing)
Пример с некоторыми поддельными данными:
a1<-data.frame(id=rep(letters[1:5],3),nums=1:15)
a2<-data.frame(id=rep(letters[6:10],3),nums=16:30)
alist<-lapply(paste0("a",1:2),get)
thing<-function(x) {x %>% group_by(id) %>% summarize(means=mean(nums))}
lapply(alist,thing)
[[1]]
# A tibble: 5 x 2
id means
<fct> <dbl>
1 a 6.
2 b 7.
3 c 8.
4 d 9.
5 e 10.
[[2]]
# A tibble: 5 x 2
id means
<fct> <dbl>
1 f 21.
2 g 22.
3 h 23.
4 i 24.
5 j 25.
Если вы хотите сохранить имена, вы можете использовать sapply
с simplify=FALSE
вместо lapply
.