2013-04-20 79 views
0

我有,我想繪製以下參數:繪圖程序

weight <- c(102,20,30,04,022,01,220,10) 
height <- c(102,20,30,04,022,01,220,10) 

catg <- c(102,20,30,04,022,01,220,10) 
catg <- matrix(height,nrow = 2) 

這些應保存在路徑中的PDF文件被畫在:

FigureFolder <- "C:\\..." 

我正在嘗試編寫一個函數,該函數需要n個輸入參數並將它們保存到一個文件中(在這種情況下,該文件是由FigureFolder定義的)。我有以下功能:

Plotting_Function <- function(...,FigureFolder){ 

     # find the number of input arguments 
     nargin <- length(as.list(match.call())) -1 
     nargin <- nargin - 2 

     variable_list <- list(...) 
     variable_list <- variable_list[1:nargin] 

     for (i in 1:length(variable_list)){ 
     if (variable_list[i] == "catg") 

routine 1 will go here 

     if(variable_list[i] != "catg") 

routine 2 will go here 

     } 
    } 

所以,從這裏我想作功能工作,所以大家敲響變量「CATG」插入函數繪圖程序將按照程序1(在我的情況輪廓) ,否則它將遵循程序2(在y情況下的線圖)。

但是,我遇到的問題是,variable_list返回一個數字,而不是插入的變量的名稱,例如

Plotting_Function <- function(weight,height,catg,FigureFolder) 

variable_list將1,2和3不是重量,高度和catg,因此我不能使用if語句顯示。任何人都可以提出一種方法來完成這項工作?

+0

您沒有在功能從確定它使用'nargin',分開。 – 2013-04-20 09:52:54

+0

你是什麼意思? nargin是輸入參數的數量,用於定義繪圖變量的數量 – KatyB 2013-04-20 09:56:09

+0

'[1:nargin]'部分是多餘的,我相信,你只是打印包含在'...'中的所有變量,否需要子集。 – 2013-04-20 09:58:41

回答

1

如果我理解你想要做什麼,這會工作:

Plotting_Function <- function(... , FigureFolder) { 

    v_names <- as.list(match.call()) 
    #variable_list <- list(...) 
    variable_list <- v_names[2:(length(v_names)-1)] 

    for (i in 1:length(variable_list)) { 

    if (variable_list[i] == "catg") print("category") # example 

     #routine 1 will go here 

    if (variable_list[i] != "catg") print(as.character(variable_list[i][[1]])) # example 

     #routine 2 will go here 

    } 
}