我想要绘制以下参数:
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语句。有谁能建议一种方法来使这项工作?
答案 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
}
}