使用Rstudio中的操作包的动态标题和滑块

时间:2014-12-13 12:24:28

标签: r rstudio

在Rstudio中使用包操作,我试图创建一个散点图,在其中我可以使用选择器在几个数据框中进行选择,然后使用滑块我控制列我想要为每个绘图轴。例如,使用这两个数据集:mtcars和iris。

library(manipulate)  
manipulate(  
 plot(dataset[, xaxis] ~ dataset[, yaxis], 
   dataset, 
   xlab = colnames(dataset)[xaxis],
   ylab = colnames(dataset)[yaxis], 
   main = title),
   xaxis = slider(1, 10), 
   yaxis = slider(1, 10), 
   dataset = picker("mtcars" = mtcars, "iris" = iris),
   title = picker("mtcars", "iris")
   )    

没关系,但是,我正在努力解决两个问题:

  1. 如何根据所选数据集(mtcars或iris)动态更改绘图的标题,而不是像上面的示例中那样手动使用其他选取器。我无法获取所选数据框的名称并将其作为字符标题传递。

  2. 如何动态确定滑块的最大参数,而不是滑块中从1到10的硬编码。例如,mtcars有11列和虹膜5.或者更好的是,选择每个轴的列名称。我尝试了很多不同的方法,但我认为问题在于我无法将控件(数据集)中使用的变量传递给其他人(滑块)。例如,这会产生错误:

    xaxis = slider(1,as.numeric(dim(dataset)[2]))

1 个答案:

答案 0 :(得分:2)

在阅读了Mark P. J. Van der Loo撰写的学习RStudio for R Statistical Computing 中的一个例子后,我采取了不同的方法。我写了一个解决我问题的函数:

library(manipulate)
scatterplot <- function(dataset){
  vars <- as.list(names(dataset))
  name <- sys.call()[[2]]
manipulate(
  plot(dataset[, xaxis] ~ dataset[, yaxis], 
       xlab = colnames(dataset)[xaxis],
       ylab = colnames(dataset)[yaxis], 
       main = as.character(name)),   
  xaxis = slider(1, as.numeric(dim(dataset)[2]), initial = 1), 
  yaxis = slider(1, as.numeric(dim(dataset)[2]), initial = 2)  
  )
}
scatterplot(mtcars)