-3

我有一个使用 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”语句是要走的路,我能得到一些正确使用的帮助吗?

谢谢!

4

1 回答 1

1

在 R 中,布尔类型TRUEFALSE也可以用T和表示F。因此,首先尝试将您命名的变量更改为T合理的东西……比如x可能???

其次,在你的typeof(x)论点中,你调用了变量 T,所以这不起作用。此外,数字周围没有引号。尝试if(!(is.numeric(x)))

第三,您的变量命名不一致,V 和 V,然后是 V1 和 V2。除了难以阅读之外,它也无法正常工作。

最后,您的 return 语句需要第二个右括号,函数代码块需要一个右花括号。

于 2012-06-18T10:17:21.750 回答