2015-08-23 18 views
0

我想創建一個函數,循環遍歷我的數據集的列,並保存每個變量的qq圖。我花了很多時間尋找解決方案,但我是R新手,無法成功應用我的數據。任何人都可以看到我做錯了什麼?如何在ggplot2中循環qqplot?

有錯誤,我給的是這個,「在EVAL錯誤(表達式,ENVIR,enclos):對象‘我’未找到」發生

library(ggplot2) 
QQPlot <- function(x, na.rm = TRUE, ...) { 
    nm <- names(x) 
    for (i in names(mybbs)) { 
      plots <-ggplot(mybbs, aes(sample = nm[i])) + 
        stat_qq() 
      ggsave(plots, filename = paste(nm[i], ".png", sep="")) 
    } 
} 

QQPlot(mybbs) 

回答

1

的錯誤,因爲你試圖傳遞一個字符串作爲一個變量名。使用aes_string()而不是aes()

此外,您正在循環名稱,而不是索引; nm[i]可以用於for(i in seq_along(names(x))之類的內容,但不適用於當前的循環。你最好在函數中用i代替nm[i],因爲你想要的是變量名。

最後,你用mybbs代替x裏面的函數。這意味着它不能與任何其他data.frame正常工作。

下面是這三個問題的解決方案:

QQPlot <- function(x, na.rm = TRUE, ...) { 
    for (i in names(x)) { 
    plots <-ggplot(x, aes_string(sample = i)) + 
     stat_qq() 
    #print(plots) 
    ggsave(plots, filename = paste(i, ".png", sep="")) 
    } 
} 
+0

謝謝你幫助我瞭解我的錯誤和代碼來解決這些問題!它像一個魅力一樣工作! –