Я создаю матрицу разброса, используя GGally::ggpairs
. Я использую пользовательскую функцию (ниже под названием my_fn
), чтобы создать нижние левые недиагональные подзаголовки. В процессе вызова этой настраиваемой функции есть информация о каждой из этих подсети, которая рассчитывается, и что я хотел бы сохранить ее позже.Добавление к объекту списка в функции отображения в R
В приведенном ниже примере каждый [email protected]
представляет собой структуру int [] со 100 значениями. В общей сложности он создается 10 раз в my_fn (один раз для каждого из 10 нижних левых недиагональных подзаглавов). Я пытаюсь сохранить все 10 из этих структур [email protected]
в объекте списка listCID
.
У меня не было успеха в этом подходе, и я попробовал несколько других вариантов (например, попытку поставить listCID
в качестве входного параметра на my_fn
или попытаться вернуть его в конце).
Возможно ли сохранить десять конструкций [email protected]
через my_fn
, которые будут использоваться позже? Я чувствую, что есть несколько проблем синтаксиса, которые я не совсем понимаю, что может объяснить, почему я застрял, и, кроме того, я был бы счастлив изменить название этого вопроса, если я не буду использовать соответствующую терминологию. Спасибо!
library(hexbin)
library(GGally)
library(ggplot2)
set.seed(1)
bindata <- data.frame(
ID = paste0("ID", 1:100),
A = rnorm(100), B = rnorm(100), C = rnorm(100),
D = rnorm(100), E = rnorm(100))
bindata$ID <- as.character(bindata$ID
)
maxVal <- max(abs(bindata[ ,2:6]))
maxRange <- c(-1 * maxVal, maxVal)
listCID <- c()
my_fn <- function(data, mapping, ...){
x <- data[ ,c(as.character(mapping$x))]
y <- data[ ,c(as.character(mapping$y))]
h <- hexbin(x=x, y=y, xbins=5, shape=1, IDs=TRUE,
xbnds=maxRange, ybnds=maxRange)
hexdf <- data.frame(hcell2xy(h), [email protected], [email protected])
listCID <- c(listCID, [email protected])
print(listCID)
p <- ggplot(hexdf, aes(x=x, y=y, fill=counts, hexID=hexID)) +
geom_hex(stat="identity")
p
}
p <- ggpairs(bindata[ ,2:6], lower=list(continuous=my_fn))
p
Вы можете добавить дополнительную информацию в качестве атрибута. Итак, после строки 'hexdf <- data.frame (...)' use 'attr (hexdf," cID ") <- h @ cID' (и удалите две строки кода listCID). Затем вы можете получить доступ, посмотрев на отдельные графики, то есть 'str (p [2,1])' и извлечь с помощью 'attr (p [2,1] $ data," cID ")' – user20650