2016-12-20 5 views
0

Я хочу построить гистограммы для ряда непрерывных переменных из разных наборов данных. Я создал функцию для ggplot гистограммы:Использование mapply для построения нескольких гистограмм с ggplot отдельно

library(ggplot2) 

# two parameters 
FU <- function(dat, var){ 
    ggplot(data = dat, aes_string(var)) + 
    geom_histogram(aes(y=..density..), bins = 20)} 

FU(diamonds, "y") 

Теперь я определила список, который включает мои непрерывные переменные и хотел применить это к данным бриллиантов:

vars <- list("x", "y") 
lst <- mapply(FU, diamonds, vars) 

Но это дает мне й следующий ошибка:

Error: ggplot2 doesn't know how to deal with data of class numeric 
+0

Как вы думаете, вы перебираете одну переменную ('vars'), похоже, что это случай для' lapply'/'sapply' вместо' mapply'. – aosmith

ответ

0

mapply относится FUN к первым элементам каждого ... аргумента.

Следовательно, mapply примет в качестве первого элемента бриллиантов.

При взгляде на длину (бриллианты) мы видим, что бриллианты имеют 10 элементов (10 переменных).

Таким образом, текущий код применить функцию к каждому переменным алмазам для каждого элемента списка c("x", "y")

Чтобы сделать это правильно, я боюсь, что использование для цикла в этом случае необходимо, по крайней мере, для набора данных ,

Смежные вопросы