检查输入值时出错

时间:2012-06-18 08:54:08

标签: r

我有一个使用readline的功能,要求人们输入数据。但我不知道确保所输入数据符合我的标准的最佳方法。我在想“if”语句可能是检查错误的最佳方法,但我不确定如何合并它们。我尝试使用它们显然存在缺陷(见下文)。

作为一个简单的例子,我将遇到的两个最可能的问题是我想确保为x输入至少一些值(如果为x输入值,则为一个数字),V1和V2包含相同数量的值。

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)

}

正如您所看到的,我希望在导致实际错误发生之前尝试发现潜在错误,然后让人们有机会重新输入数据。如果“if”语句是要走的路,我能否正确使用它?

谢谢!

1 个答案:

答案 0 :(得分:1)

在R中,布尔类型TRUEFALSE也可以由TF表示。所以首先尝试将名为T的变量更改为合理的... ... x可能???

其次,在您的typeof(x)参数中,您调用了变量T,因此无效。另外,数字周围没有引号。试试if(!(is.numeric(x)))

第三,你的变量名称不一致,V和V,然后是V1和V2。除了难以阅读之外,它也是行不通的。

最后,你的return语句需要第二个右括号,函数代码块需要一个结束的大括号。