安装.包( " 瓦拉丁 " )
# install.packages(“devtools”)
开发工具 :: 安装github( " egnha/valaddin公司 " , 裁判 = " 开发 " , 构建渐晕图 = 真的 )
割线 <- 功能 ( (f) , x个 , dx公司 )(f)( x个 + dx公司 ) - (f)( x个 )) / dx公司
secant_numeric(秒_数字) <- 功能 ( (f) , x个 , dx公司 ) { stopifnot(非数字( x个 ),是数字( dx公司 )) 正割( (f) , x个 , dx公司 ) } 割线_数字( 日志 , 1 , .1 ) # > [1] 0.9531018 secant_numeric(秒_数字)( 日志 , " 1 " , " .1 " ) # >secant_numeric(log,“1”,“.1”)中出错:是.numeric,(x)不是TRUE
-
在控制台上进行交互使用很不方便:您必须 声明一个新函数,并为其指定一个新名称(或copy-paste 原始功能体) -
它不会捕获所有错误,只捕获发生在 检查 -
如果你后来意识到你需要额外的东西,你就回到了原点 检查,或者想跳过它们。
图书馆( 瓦拉丁 ) # 检查`x`和`dx`是否为数字
割线 <- 牢固地( 割线 , 列表 ( ~ x个 , ~ dx公司 ) ~ is.数字 ) 正割( 日志 , 1 , .1 ) # > [1] 0.9531018 正割( 日志 , " 1 " , " .1 " ) # >错误:正割(f=log,x=“1”,dx=“.1”)
# >1)FALSE:是数字(x)
# >2)FALSE:是数字(dx)
割线 <- 牢固地( 割线 , 列表 ( ~ x个 , ~ dx公司 ) ~ {长度( . ) == 1升 }) 正割( 日志 , " 1 " ,c( .1 , .01 )) # >错误:正割(f=log,x=“1”,dx=c(0.1,0.01))
# >1)FALSE:为数字(x)
# >2)FALSE:(函数(.){长度(.)==1L})(dx)
割线 <- 松散地( 割线 ) # 检索原始函数
割线 <- 牢固地( 割线 , 列表 ( ~ x个 , ~ dx公司 ) ~ {是数字( . ) && 长度( . ) == 1升 }) 正割( 日志 , 1 , .1 ) # > [1] 0.9531018 割线( 日志 , " 1 " ,c( .1 , .01 )) # >错误:正割(f=log,x=“1”,dx=c(0.1,0.01))
# >1)FALSE:(函数(.){is.nummeric(.)&&length(.)==1L})(x)
# >2)FALSE:(函数(.){is.nummeric(.)&&length(.)==1L})(dx)
公元前 <- 功能 ( x个 , 年 )c(c)( x个 , 年 , 1 - x个 - 年 ) # 检查“y”是否为正值
bc_uhp(超高压) <- 牢固地( 公元前 , 列表 ( " (x,y)不在上半平面 " ~ 年 ) ~ { . > 0 }) bc_uhp(超高压)( .5 , .2 ) # > [1] 0.5 0.2 0.3 bc_马力( .5 , - .2 ) # >错误:bc_uhp(x=0.5,y=-0.2)
# >(x,y)不在上半平面
bc_数字 <- 牢固地( 公元前 , ~ is.数字 ) bc_数字( .5 , " .2 " ) # >错误:bc_num(x=0.5,y=“.2”)
# >FALSE:是数字(y) bc_数量( " .5 " , " .2 " ) # >错误:bc_num(x=“.5”,y=“.2”)
# >1)FALSE:是数字(x)
# >2)FALSE:是数字(y)
bc_数字 <- 牢固地( 公元前 , " 不是数字 " ~ is.数字 ) bc_数字( .5 , " .2 " ) # >错误:bc_num(x=0.5,y=“.2”)
# >非数字:`y`
三角形内(_T) <- 功能 ( x个 , 年 ) { x个 > = 0 && 年 > = 0 && 1 - x个 - 年 > = 0 } 外部 <- " (x,y)不在三角形中 "
bc_tri公司 <- 牢固地( 公元前 , 列表 ( 外部 ~ 三角形内(_T)( x个 , 年 )) ~ 是真的 ) # 或者更简洁地说:
bc_tri公司 <- 牢固地( 公元前 ,vld_true( 外部 ~ 三角形内(_T)( x个 , 年 ))) # 或者更简洁地说,通过依赖自动生成的错误消息:
# bc_tri<-稳固(bc,vld_true(~in_triangle(x,y))) bc_tri公司( .5 , .2 ) # > [1] 0.5 0.2 0.3 bc_tri公司( .5 , .6 ) # >错误:bc_tri(x=0.5,y=0.6)
# >(x,y)不在三角形中
-
通过显式赋值,在函数头之前进行输入检查 函数到 坚定() 的 .f型 参数: 公元前 <- 牢固地( ~ is.数字 , ~ {长度( . ) == 1升 }, vld真( 外部 ~ 三角形内(_T)( x个 , 年 )), .f型 = 功能 ( x个 , 年 ) { c(c)( x个 , 年 , 1 - x个 - 年 ) } ) 公元前( .5 , .2 ) # > [1] 0.5 0.2 0.3 公元前( .5 ,c( .2 , .1 )) # >误差:bc(x=0.5,y=c(0.2,0.1)) # >1)FALSE:(函数(.){长度(.)==1L})(y) # >2)错误评估检查(函数(x)为逻辑(x)&&长度(x)==1L&&! is.na(x)&&x)(in_triangle(x,y)):“长度=2”强制到“逻辑(1)” 公元前( " .5 " , 1 ) # >错误:bc(x=“.5”,y=1) # >1)FALSE:是数字(x) # >2)(x,y)不在三角形中 -
使用 马格里特 %>% 操作员通过将输入检查捕获为列表 坚定() 的 .检查表 参数: 图书馆( 马格里特 ) 公元前2年 <- 列表 ( ~ is.数字 , ~ {长度( . ) == 1升 }, vld_true值( 外部 ~ 三角形内(_T)( x个 , 年 )) ) % > % 牢固地( 功能 ( x个 , 年 ) { c(c)( x个 , 年 , 1 - x个 - 年 ) }, .检查表 = . ) -
更好的是,使用 %签入% 操作员: 公元前3年 <- 列表 ( ~ is.数字 , ~ {长度( . ) == 1升 }, vld真( 外部 ~ 三角形内(_T)( x个 , 年 )) ) % 办理登机手续 % 功能 ( x个 , 年 ) { c(c)( x个 , 年 , 1 - x个 - 年 ) }
-
typeCheck(类型检查) ,与 R的类型 ,启用 通过以下方法创建具有类型有效参数的函数 特殊类型注释。 此方法与 valaddin:而valaddin指定输入检查为 谓语 具有范围的函数 ,typeCheck将输入检查指定为 论据 类型为 .