-3

readline を使用して人々にデータの入力を求める関数があります。しかし、入力されたデータが私の基準を満たしていることを確認するための最良の方法について、私は途方に暮れています。「if」ステートメントがエラーをチェックするための最良の方法かもしれないと考えていますが、それらを組み込む方法がわかりません。それらを使用しようとする私の試みには明らかに欠陥があります (以下を参照)。

簡単な例として、私が遭遇する可能性が最も高い問題の 2 つは、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 ではブール型TRUEandはandFALSEで表すこともできます。最初に、名前を付けた変数を適切なものに変更してみてください...おそらく???のようにTFTx

第二に、あなたのtypeof(x)議論では、変数 T を呼び出したので、それは機能しません。さらに、数値を引用符で囲むことはありませんでした。試すif(!(is.numeric(x)))

第 3 に、変数の名前が V と V、次に V1 と V2 と一貫性がありません。読みにくいだけでなく、機能しません。

最後に、return ステートメントには 2 つ目の閉じ括弧が必要です。関数コード ブロックには閉じ中括弧が必要です。

于 2012-06-18T10:17:21.750 に答える