在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;的数字参数。我会更直观,更少错误,然后是一个字符串,但也许它是不值得的。
答案 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")