Моя цель - иметь функцию, которую можно вызывать с массивом наборов данных n . Эта функция вызовет manipulate
и создаст график с блоком управления. В этом поле будет столько флажков, сколько имеется наборов данных (т. Е. n ). Каждый флажок позволит показать / скрыть соответствующий набор данных на графике.
Для простоты я буду предполагать, что каждый набор данных является простой строкой.
manipulate
отлично работает, когда известны элементы управления. Здесь для одного элемента управления:
manipulate(plot(0,0,main=b), b=checkbox(TRUE, 'bool'))
Однако в моем случае мне нужно переменное количество элементов управления. Я могу создать список элементов управления следующим образом:
dataList = c('a', 'b', 'c')
ctrls = list()
for(data in dataList) {
ctrls[[data]] = checkbox(TRUE, data)
}
manipulate(plot(0,0), ctrls)
Теперь давайте рассмотрим минимальный вариант использования: функция, которая создаст Участок. Его заголовок будет объединением всех имен наборов данных, имеющих значение TRUE
.
Моя первоначальная идея состояла в том, чтобы передать список элементов управления функции, чтобы я мог получить доступ к каждому элементу управления там.
foo <- function(dataList, ctrls) {
print(dataList)
title = ''
for(data in dataList) {
if (ctrls[[data]]) { # this fails
title=cat(title, data)
}
}
plot(0,0,main=title)
}
manipulate(foo(dataList, ctrls), ctrls)
Вышеприведенные ошибки не выполняются, поскольку ctrls[[data]]
не является значением элемента управления.
Есть ли способ получить доступ к текущему значению элемента управления, если ему присвоено значение manipulate
внутри список