Movatterモバイル変換


[0]ホーム

URL:


rtype

Build Status

rtype is a strong type system for R which supports symbol declarationand assignment with type checking.

Releasenotes

Installation

You can install the latest released version fromCRAN with

install.packages("rtype")

or the latest development version from GitHub with

devtools::install_github("rtype","renkun-ken")

Examples

Declaring symbols

Declare symbols Before using them.

library(rtype)declare(x,y=numeric(),z=logical())ls.str()
x :  NULLy :  num(0) z :  logi(0)

Assignment with typechecking

# NULL symbol can be assigned any valuenumeric(x)<-c(1,2,3.5)# numeric symbol can be assigned only numeric value# is.numeric(y) = TRUE, and is.numeric(c(1,2,3)) = TRUEnumeric(y)<-c(1,2,3)# the symbol does not take value that violates its type checking# is.integer(y) = FALSE (violation)integer(y)<-c(1L,2L)
Error: symbol fails type checking with .Primitive("is.integer")
# the assignment fails if the value does not pass type checking# is.logical(z) = TRUE, but is.logical(c(1,2,3)) = FALSE (violation)logical(z)<-c(1,2,3)
Error: value fails type checking with .Primitive("is.logical")

Assignment with conditionchecking

Checking single condition

# assign value checking condition length = 3numeric(x,length =3)<-c(1,2,3)# stop if condition is violatednumeric(x,length =3)<-c(1,2,3,4)
Error: value [length = 4L] violates condition [length = 3]

Checking multiple conditions

# assign value checking multiple conditionsdeclare(df)data.frame(df,ncol=2,nrow=10)<-data.frame(x=1:10,y=letters[1:10])# or equivalentlydata.frame(df,dim=c(10,2))<-data.frame(x=1:10,y=letters[1:10])# stop if any condition is violateddata.frame(df,ncol=3,nrow=10)<-data.frame(x=1:10,y=letters[1:10])
Error: value [ncol = 2L] violates condition [ncol = 3]

Checking function conditions

# checking function conditiondeclare(x)cond1<-function(x)mean(x)<=5numeric(x,length =10, cond1)<-0:9numeric(x,length =10, cond1)<-1:10
Error: value violates condition [function (x) mean(x) <= 5]

General checking

declare(x)check(x,class="integer",length=10)<-1:10check(x,class="numeric",length=10)<-1:10
Error: value [class = "integer"] violates condition [class = "numeric"]

Help overview

help(package = rtype)

License

This package is underMIT License.


[8]ページ先頭

©2009-2025 Movatter.jp