我有一个使用 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”语句是可行的方法,我可以获得一些有关正确使用该语句的帮助吗?
Thanks!
R 中的布尔类型TRUE
and FALSE
也可以表示为T
and F
。所以首先尝试更改您命名的变量T
一些明智的事情......比如x
或许???
其次,在你的typeof(x)
参数,你调用了变量 T,所以这是行不通的。此外,数字周围没有引号。尝试if(!(is.numeric(x)))
第三,你的变量命名不一致,V和V,然后是V1和V2。除了难以阅读之外,它也行不通。
最后,您的 return 语句需要第二个右括号,函数代码块需要一个右大括号。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)