强制数字参数使函数有2个小数位

时间:2016-07-05 12:34:41

标签: r function arguments

在R函数中,是否可以要求为数字参数提供一定数量的小数位。 我希望有类似的东西:

foo <- function(x) {
  if(x has two decimal places) {
  do something
  }else{
  print("Error, please provide the number with two decimal places. Ex: 2010.01")
  }
}

foo(2010.1)
Error... 

foo(2010.10)
works

上下文:我正在编写一个package,其中包含一组用于不同数据集的导入函数。所有函数都有一个通用的数字参数(t,对于&#34;句点&#34;)。但是,频率在数据集之间变化(年度,季度和月度)。所以我想让用户将年 - 月提供为带有两位小数的数字变量。 2010年1月将是​​t = 2010.01。我想阻止用户无意中为2010年1月撰写2010.1。

另外,如果您认为此策略存在问题,请告诉我。这个想法是关于&#34; period&#34;的数字参数。我会更直观,更少错误,然后是一个字符串,但也许它是不值得的。

1 个答案:

答案 0 :(得分:2)

您可以使用grepl检查正确的模式:

grepl("^[0-9]{4}\\.[0-9]{2}$", "2010.11")
TRUE
grepl("^[0-9]{4}\\.[0-9]{2}$", "2010.1")
FALSE
grepl("^[0-9]{4}\\.[0-9]{2}$", "2010.001")
FALSE

所以你的情况会是这样的:

if(grepl("^[0-9]{4}\\.[0-9]{2}$", as.character(x))) {
  do something
else stop("wrong entry")
相关问题