У меня есть список списков матриц. Все списки имеют одинаковое количество матриц, все матрицы имеют одинаковое количество столбцов, и все матрицы в списке имеют одинаковое количество строк, однако количество строк в матрицах разных списков различается. Я попытался воссоздать небольшой пример набора данных ниже
set.seed(100)
biglist <- list(
a=list(foo=matrix(sample(1:10,30,replace=TRUE),ncol=3 ),
bar=matrix(sample(1:10,30,replace=TRUE),ncol=3),
puppy=matrix(sample(1:10,30,replace=TRUE),ncol=3)
),
b=list(foo=matrix(sample(1:10,24,replace=TRUE),ncol=3),
bar=matrix(sample(1:10,24,replace=TRUE),ncol=3),
puppy=matrix(sample(1:10,24,replace=TRUE),ncol=3)
)
)
Я пытаюсь создать блок-график каждой матрицы, где столбцы - это разные блок-графики на одном графике. Я могу сделать это для одной матрицы, но у меня возникают проблемы с применением его ко всему списку списков.
Вот код, который я написал для одного коробочного графика
yoptions=c('foo','bar','puppy')
mynames=c('first','second','third')
titleoptions=c('a','b')
plotdata=biglist$a$foo
colnames(plotdata)=mynames
afoo=ggplot(melt(as.data.table(plotdata)),aes(x=variable,y=value))+
geom_boxplot()+ggtitle(paste(mynames[1],titleoptions[1],sep=" "))+
ylab(paste(yoptions[1]))
Это дает мне то, что я хочу для матрицы foo в списке a. Я хочу теперь иметь возможность применять это к каждой матрице в списке, изменяя plotdata, заголовки и метки, чтобы соответствовать соответствующей матрице в списке, а затем сохранять ее в переменную, которая объединяет список и матрицу. Это привело бы к следующим переменным, все с другим графиком, прикрепленным к этой переменной: afoo abar apuppy bfoo bbar bpuppy
Я знаю, что это не очень r-like, но первая идея, которая у меня была, была своего рода вложенной for-l oop, хотя я не уверен, как это будет работать в этом случае. Я знаю, что lapply используется для списков, и я кое-что изучил во вложенных lapplys (lapplies?), Но я не уверен, как получить это, чтобы сделать несколько переменных, которые соответствуют моим цифрам, которые я хочу получить.
Любой совет ценится! Спасибо!