在r中绘制n个参数的例程

时间:2013-04-20 09:43:31

标签: r function plot

我想要绘制以下参数:

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

      }
    }

所以,从这里开始,我试图让函数工作,以便改变变量&#39; catg&#39;插入到函数中的绘图程序将遵循例程1(在我的情况下为轮廓),否则它将遵循例程2(在y情况下的线图)。

然而,我遇到的问题是variable_list返回一个数字而不是插入的变量的名称,例如

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

variable_list将是1,2,而3不是weight,height和catg,因此我不能使用我所显示的if语句。有谁能建议一种方法来使这项工作?

1 个答案:

答案 0 :(得分: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

  }
}
相关问题