Как использовать другую метку (имя переменной) в каждой итерации (переменной)?

#r #bar-chart #apply #var #lapply

#r #гистограмма #применить #var #lapply

Вопрос:

У меня есть кадр данных data с 40 переменными, и у меня есть функция func, которая, помимо прочего, рисует гистограмму.

 func <- function(var, arg1, arg2){
  # ...
  barplot(table(arg1, arg2)[2,], 
          ylab = "Frequency",
          xlab = names(var))
  # ...
}
  

Я хочу применить эту функцию к моему фрейму данных и получить гистограмму для каждой из 40 переменных, используя имя каждой переменной, такое как xlab для каждой гистограммы. Для этого я использовал lapply, но я не могу отображать имя каждой переменной как xlab.

 lapply(data, func, arg1, arg2))
  

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

1. Не lapply поверх data , а поверх names(data) .

2. @Axeman Хотя я этого не показывал, в моей функции мне нужна также информация о данных помимо имен переменных, поэтому, если я lapply закончу names(data) , я думаю, что не смогу использовать data информацию.

3. Используйте subs <- data[[arg]] или что-то подобное в верхней части вашей функции.

Ответ №1:

Я полагаю, вы ищете mapply , который можно использовать для перебора нескольких объектов, где индексы выстраиваются в линию между объектами.

 func <- function(x, name) plot(x, main = name)

mapply(FUN = func, x = iris, name = names(iris))