I’ve got a function that uses readline to ask people to enter in data. But I’m at a loss as to the best method to insure that the data entered meet my criteria. I’m figuring “if” statements may be the best way to go to check for errors, but I’m not sure how to incorporate them. My attempt at using them is obviously flawed (see below).
As a simple example, 2 of the most likely problems I’m going to run into would be I’d like to insure that at least some value is entered in for x (and if a value is entered for x it is a number) and that V1 and V2 contain the same number of values.
fun<-function(){
T<-readline("What is x" )
if(T=="" | typeof(x)!=numeric)
{print("Input non-aceptable")
T<-readline("What is x ")}
else
V<-readline("Enter 4 values" )
V2<-readline("Enter 4 more values ")
if(length(V1)!=length(V2))
{print("V1 & V2 do not contain equal # of values")
V<-readline("Enter 4 values ")
V<-readline("Enter 4 more values ")}
else
T<-as.numeric(T)
V<-as.numeric(V)
V2<-as.numeric(V2)
return(list(x,V1,V2)
}
As you can see, my hope is to try and spot potential errors before they cause an actual error to happen, and then to give the person an opportunity to re-enter the data. If “if” statements are the way to go, can I get some help on using the correctly?
Thanks!
In R the boolean types
TRUEandFALSEcan also be represented byTandF. So first off try changing the variables that you have namedTto something sensible… likexmaybe???Secondly, in your
typeof(x)argument, you called the variable T, so that won’t work. In addition there were no quotes around numeric. Tryif(!(is.numeric(x)))Thirdly, your variables are inconsistently named, V and V, and then V1 and V2. Aside from hard to read, it also just won’t work.
Lastly, your return statement needs a second closing parenthesis, the function code block needs a closing curly brace.