У меня есть список colName
, который содержит имена столбцов Dataframe isNumValLong
.Каждый элемент этого списка представляет собой символьный вектор, содержащий 6 имен столбцов.
isNumValLong
- это кадр данных, содержащий значения для имен столбцов, передаваемых вфункция plothist()
:
Я намерен передать colName
в plothist
, что создаст несколько графиков в наборе из 6 переменных вкаждый вызов.
plothist <- function(colName, myDf) {
#str(name)
#class(name)
l <- length(colName)
ls <- list()
for (i in 1:l) {
ls[[i]] <- isNumValLong %>% filter(key %in% colName[i]) %>%
ggplot(aes(x = value)) + geom_histogram() + facet_grid(. ~ key, scales = "free")
}
grid.arrange(ls)
}
мой вызов функции ниже:
lapply(colName, plothist, isNumValLong)
Функция возвращает ошибку
Пожалуйста, дайте мне знать, где я ошибаюсь?
@ MrFlik, вот воспроизводимый код:
library(ggplot2)
library(tidyr)
library(gridExtra)
plothist <- function(name, myDf) {
#str(name)
#class(name)
l <- length(name)
ls <- list()
for (i in 1:l) {
ls[[i]] <- myDf %>% filter(key %in% name[i]) %>%
ggplot(aes(x = value)) + geom_histogram() + ggtitle(label = as.character(name[i]))
}
grid.arrange(ls)
}
u <- rnorm(10^6)
v <- rnorm(10^6)
w <- rnorm(10^6)
x <- rnorm(10^6)
y <- rnorm(10^6)
z <- rnorm(10^6)
isNumVal <- data.frame(cbind(u, v, w, x, y, z))
isNumValLong <- gather(isNumVal, key = "key", value = "value")
colName <- as.character(unique(isNumValLong$key))
colName <- split(colName, ceiling(seq_along(colName)/2))
lapply(colName, plothist, isNumValLong)
Ожидаемый результат должен составлять 3 набора графиков, каждый из которых имеет два вспомогательных участка.Пример первого сета выглядит следующим образом: