r - 在 Rstudio 中使用操作包动态标题和 slider

标签 r rstudio

使用 Rstudio 中的包操作,我尝试创建一个散点图,在其中我可以使用选择器在多个数据帧中进行选择,然后使用 slider 控制我想要为每个轴绘制的列。例如,使用这两个数据集: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. 如何动态确定 slider 的最大参数,而不是在 slider 中硬编码从 1 到 10。例如 mtcars 有 11 列,iris 5。或者更好的是,通过以下方式选择每个轴的列姓名。我尝试了很多不同的方法,但我认为问题是我无法将控件(数据集)中使用的变量传递给其他控件( slider )。例如,这会生成错误:

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

最佳答案

在阅读了 Mark P. J. Van der Loo 的学习 RStudio for R 统计计算中包含的示例后,我采取了不同的方法。我编写了一个解决我的问题的函数:

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)

关于r - 在 Rstudio 中使用操作包动态标题和 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27458733/

相关文章:

r - Rstudio服务器的全新 session

r - GitHub 中的 Markdown 公式展示

r - 使 geom_text 颜色比 geom_point 颜色深

ajax - 使用 R 抓取具有 Ajax 表的网站

r - 如何求解R中给定变量的方程?

r - 更改 R 中数据框列表中的列名称

r - 使代码在单击 R 演示文稿时运行

r - Plotly 在 RStudio Viewer 中无法正确显示

R: `match` 中的行为与列表不一致

r - 为什么 is.vector() 为列表返回 TRUE?