2014-12-13 25 views
4

在Rstudio中使用包操作,我試圖創建一個scatterplot,我可以在幾個數據框中使用picker選擇然後使用滑塊控制列我會喜歡繪製每個軸。例如,使用這兩個數據集:mtcars和iris。在Rstudio中使用操作包的動態標題和滑塊

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或虹膜),而不是手動像我在上面的例子中那樣使用另一個選擇器。我無法獲取所選數據框的名稱並將其作爲字符標題傳遞。

  2. 如何動態確定滑塊的最大參數,而不是從1到10的滑塊中進行硬編碼。例如,mtcars有11列和虹膜5.或者最好還是按名稱選擇每個軸的列。我嘗試了許多不同的方法,但我認爲問題在於我無法將控件(數據集)中使用的變量傳遞給其他人(滑塊)。例如,這會產生一個錯誤:

    x軸=滑塊(1,as.numeric(暗(數據集)[2]))

回答

2

我採取了不同的方法,包括讀出一個例子後在學習Rt統計計算的RStudio由Mark PJ Van der Loo。我寫了一個解決我的問題的函數:

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)