在R Manipulate中添加许多复选框作为列表/向量

时间:2013-06-04 20:16:46

标签: r user-interface plot statistics

我正在使用{manipulate}向绘图中添加一些复选框 - 每个正在绘制的一行。由于所需数量未预先定义,因此我试图找出一种方法将所有复选框作为向量或列表传递给manipulate函数。 文档似乎暗示了一些东西:

  

操纵(_expr,...)

     

_expr:要评估的表达式。

     

...:一个或多个命名控制参数(即滑块,选取器,复选框或按钮),或包含命名控件的列表。

我认为解决方法是传递所需数量的复选框列表。但究竟应该怎么做呢?

1 个答案:

答案 0 :(得分:1)

以下示例应该执行您想要的操作:

# Define function for ploting
example <- function(...){
  plot(cars)
  i <- 1
  for (my.control in list(...)) {
    if (my.control) abline(0, i)
    i <- i+1
  }
}

# Define your controls
custom.args <- list()
for (i in 1:5) {
  custom.args <- append(custom.args, list(checkbox(FALSE, paste("Ceckbox", i))))
}
names(custom.args) <- paste("checkbox", 1:5, sep="")

# Pass everything to manipulate
library(manipulate)
manipulate(
  eval(parse(text=sprintf('example(%s)', 
                          paste(names(custom.args), collapse=","))
             )),
  custom.args)

我不知道是否有更简洁的方法将控制值传递给绘图功能,但至少可以这样做。