Проблема вопроса разделена на следующие две функции:
- Функция
comp_and_alph
- исправлена функция вопроса, создающая comp
и alpha
оценки столбцов, соответствующих только одному шаблону. - Функция
comp_and_alph_all
соответствует всем шаблонам в variable_name
.
Функции предназначены для совместной работы, предпочтительно вызывая comp_and_alpha_all
.
comp_and_alph <- function(data = my_data, variable_name, ...) {
data %>%
select(matches(variable_name)) %>%
mutate(comp = composite(.),
alpha = alpha(., ...)$scores) %>%
rename_at(vars(c("comp", "alpha")), ~paste(variable_name, .,sep = "_"))
}
comp_and_alph_all <- function(data, variables, ...){
res <- lapply(variables, function(v){
comp_and_alph(data, v, ...)
})
Reduce(function(x, y){merge(x, y)}, init = list(data), res)
}
comp_and_alph_all(df1, c("t1pp", "t1se"), check.keys = TRUE)
Данные.
df1 <-
structure(list(t1pp_1 = c(6L, 7L, 4L, 5L, 4L, 6L), t1pp_2 = c(3L,
4L, 4L, 5L, 2L, 5L), t1pp_3 = c(5L, 7L, 6L, 7L, 6L, 7L), t1pp_4 = c(3L,
6L, 5L, 5L, 6L, 5L), t1se_1 = c(4L, 5L, 4L, 4L, 4L, 1L), t1se_2 = c(3L,
5L, 4L, 5L, 4L, 1L), t1se_3 = c(4L, 4L, 4L, 4L, 3L, 4L), t1se_4 = c(3L,
5L, 4L, 5L, 4L, 4L), t1cpl_1 = c(1L, 5L, 1L, 5L, 4L, 1L), t1cpl_2 = c(2L,
5L, 2L, 4L, 4L, 2L), t1cpl_3 = c(2L, 5L, 3L, 4L, 2L, 2L), t1cpl_4 = c(3L,
5L, 2L, 4L, 3L, 2L)), class = "data.frame", row.names = c(NA, -6L))