R 强制函数的数值参数具有2位小数
在R函数中,是否可能要求数字参数具有一定数量的小数位数。 我想要一些类似于:R 强制函数的数值参数具有2位小数,r,function,arguments,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
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
foo您可以使用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")
您可以使用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")
您可以使用函数(Ndec)来计算十进制数。您可以使用函数(Ndec)来计算十进制数。我尝试实现您的解决方案,但不起作用。foo(2010.10)返回错误消息。我认为在函数中输入条件之前,2010.10可能会被计算为2010.1。此外,2010.001没有被认为是一个错误的条目。我编辑了正则表达式,通过添加锚定“^”和“$”来修复第二个(和相关情况)。您的第一个场景更难解决。一种方法是强制用户以字符形式输入值,如果用户不这样做,则使用stop
抛出一个错误。我尝试了实现您的解决方案,但它不起作用。foo(2010.10)返回错误消息。我认为在函数中输入条件之前,2010.10可能会被计算为2010.1。此外,2010.001没有被认为是一个错误的条目。我编辑了正则表达式,通过添加锚定“^”和“$”来修复第二个(和相关情况)。您的第一个场景更难解决。一种方法是强制用户以字符形式输入值,如果用户没有输入,则使用stop
抛出错误。