Я искал здесь и в Google и не нашел ответа, который я могу применить к моей ситуации.Применить функцию над столбцами dataframe в R, скомпилировать результаты
Допустим, у меня есть блок данных с колонками для элемента 1, элемента 2, элемента 3, метрики, другого. У меня есть еще одна внутренняя функция, которая имеет три аргумента (input_dataframe, element_position, metric_position), которые я использую для выполнения вычислений по одному элементу за раз. Он выводит фрейм данных, скажем, 1 строку на три переменные.
Я пытаюсь использовать либо lapply, либо для циклов, чтобы написать код, который позволит мне указать диапазон столбцов, содержащих элементы (в этом примере выше, его столбцы 1-3 для данных) и запустить функцию для всех указанных столбцов против столбца метрики, а затем объединить результаты в одну таблицу, которая имеет результаты каждого запуска функции. Мне не повезло, что эта работа пробовала варианты lapply и для циклов с seq_along. Какие-либо предложения? Пример данных, кода и вывода ниже для моего текущего неэффективного решения:
#example data
element1 <- c("control", "control", "variation", "variation")
element2 <- c("control", "variation", "variation", "control")
element3 <- c("variation", "control", "variation", "variation")
metric <- c(10,15,20,25)
other <- c(2,4,2,6)
data<-data.frame(element1, element2, element3, metric, other)
#example function
test_func <- function(input_df,element_position,metric_position)
{
df <- input_df[,c(element_position,metric_position)]
colnames(df) <- c("element","metric")
mean <- ddply(df,~element,summarise,mean(metric))
control <- mean[1,2]
variation <- mean[2,2]
lift <- (variation-control)/control
df_table <<- data.frame(control,variation,lift)
}
#call function three times, once for each element, compile results
test_func(data,1,4)
element1 <- df_table
test_func(data,2,4)
element2 <- df_table
test_func(data,3,4)
element3 <- df_table
summary_output <- rbind(element1,element2,element3)
Это работает безупречно! Спасибо за быстрый ответ! – data1082