【发布时间】:2013-04-20 09:43:31
【问题描述】:
我希望绘制以下参数:
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 语句。任何人都可以提出一种方法来完成这项工作吗?
【问题讨论】:
-
你不要在函数中使用
nargin,除了确定它。 -
什么意思? nargin 是输入参数的数量,用于定义绘图变量的数量
-
[1:nargin]部分我认为是多余的,您只需打印...中包含的所有变量,无需子集。 -
但如果我返回 list(...) 它包含 4 个变量,我插入函数和 FigFolder 中的 3 个。
-
那是因为你命名的参数被称为
FigureFolder而不是FigFolder。