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 语句。任何人都可以提出一种方法来完成这项工作吗?

4

1 回答 1

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

  }
}
于 2013-04-21T01:18:20.130 回答