我有一个名为plot()
的函数。我希望我的函数在某种程度上,如果用户只输入plot()
,它将绘制在函数内部读取的数据中的所有行(内部plot()
数据将被读取)
我还希望用户能够从数据中选择要绘制的行。因此,如果用户输入plot(1)
,函数将绘制第一行。如果用户输入plot(1,3)
,它将绘制第一行和第三行。
我试过这样做,但我不确定如何。
这就是我试图做的事情:
plot <- function(x){
if(x==0)
{ //reads the whole file and plots all the rows
}
else
{
//reads the specified rows and plots them
}
}
仅当用户想要在plot(1)
的情况下绘制一行时才有效,但如果用户想要多行(即plot(1,2,3)
)则不起作用。
帮助?
答案 0 :(得分:2)
test <- function(...){
rows <- c(...)
if(!is.null(rows) & !is.integer(rows)){stop("Input is not an integer"!)}
if(max(rows) > nrow(data)){stop("Out of bounds!")}
if(is.null(rows)){
plot(data)
}else{
plot(data[rows,])
}
}
...
可让您输入任何内容,因此需要预防错误。
该函数只是创建一个输入向量,检查长度以查看是否给出了输入,然后绘制整个数据集(没有给出输入)或由向量rows
确定的行。
修改:将第一次错误预防从numeric
更改为integer
。
从长远来看,使用这种输入可能需要更多的错误预防,但现在它应该可以正常工作。