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

      }
    }

したがって、ここから関数を機能させようとしています。変数 'c​​atg' が関数に挿入された場合、プロット ルーチンはルーチン 1 (私の場合は輪郭) に従い、それ以外の場合はルーチン 2 (y の場合はライン プロット) に従います。 )。

ただし、私が抱えている問題は、 variable_list が挿入された変数の名前ではなく数値を返すことです。

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

variable_list は、weight、height、catg ではなく 1、2、3 になるため、上記の 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 に答える