Как перебирать столбцы в R и применять различные функции на основе имен столбцов

#r #rscript

#r #rscript

Вопрос:

Я хочу перебирать все столбцы во фрейме данных и применять функции к каждому столбцу на основе имени столбца, если имя столбца abc , то я хочу my.summary() , чтобы функция выполнялась в этом столбце, а остальные столбцы должны использовать другую функцию

  x <- sapply(Data, as.numeric )
 x[is.na(x)] <- 0

  my.summary <- function(a){
  c(
  Worst_Decile = quantile(a,0.10),
  Worst_Quartile = quantile(a,0.25),
  median = median(a),
  Best_Quartile = quantile(a,0.75),
  Best_Decile = quantile(a,0.90)
   )
   }
 LowIsBetter <- function(a){
  c(
  Worst_Decile = quantile(a,0.90),
  Worst_Quartile = quantile(a,0.75),
  median = median(a),
  Best_Quartile = quantile(a,0.25),
  Best_Decile = quantile(a,0.10)
  )
 }

 for (i in colnames(x)){
 if(i == "ABC"){
 xy <- apply(x,2,my.summary)
 }else{xy <- apply(x,2,LowIsBetter)}
  }
 

Фрейм данных:

введите описание изображения здесь

Ожидаемый результат :

введите описание изображения здесь

Комментарии:

1. Можете ли вы поделиться кодом своего фрейма данных и ожидаемым результатом вместо изображения?

Ответ №1:

Попробуйте это :

 result <- sapply(colnames(x), function(col) {
  if(col == 'abc') my.summary(x[, col])
  else LowIsBetter(x[, col])
})