2

Basicで記述されたスクリプトがあり、入力CSVファイルを取得し、入力データのランダム分割間の衝突を計算します。このスクリプトはここにあります。Rで再実装する必要があります。そのようなスクリプトを作成しました。これが入力データです。

しかし、状態では

if(nentries==nrows*ncolumns)    
{  
    print("Columns, rows, and entries check; we're good to go.")  
}  
else  
{  
    print("Columns, rows, and entries don't check; please look at your data file to make sure each line has equal no. of entries.")  
}

エラーが表示されます

source("path\\to\\script.r")
error in source("path\\to\\script.r") : 
D:\projects\basicToR\target.r:19:1: Unexpected 'else'
18:         }
19: else
    ^ 

ここにエラーがあるのはなぜですか?そして、Rファイルに他のエラーがありますか?

UPDATE エラーについての質問を書くのを忘れました

seq.default(1、firstsofar、1)のエラー:'by'引数の符号が無効です

コードの断片で

for (q in seq(1,firstsofar,1)) {
    if( randnum[i]==randnum[q]) {taken="yes"}
}
4

2 に答える 2

3

それを次のように書き直します

if(nentries==nrows*ncolumns)    {
     print("Columns, rows, and entries check; we're good to go.")
}else{
     print("Columns, rows, and entries don't check; please look at your data file to make sure each line has equal no. of entries.")
}

'if'の閉じ中括弧と同じ行にelseを置く必要があります

R言語定義から

else句はオプションです。ステートメントif(any(x <= 0))x <-x [x<=0]は有効です。ifステートメントがブロック内にない場合、elseが存在する場合は、statement2の終わりと同じ行に表示する必要があります。それ以外の場合、statement2の最後の改行はifを完了し、評価される構文的に完全なステートメントを生成します。簡単な解決策は、中括弧で囲まれた複合ステートメントを使用し、ステートメントの終わりを示す閉じ中括弧と同じ行にelseを配置することです。

于 2013-02-02T17:36:55.570 に答える
2

私が完全には理解していない理由で、Relseは、その前の閉じ中括弧と同じ行にない場合、びっくりします。試す:

if(nentries==nrows*ncolumns)    {
     print("Columns, rows, and entries check; we're good to go.")
}else{
     print("Columns, rows, and entries don't check; please look at your data file to make sure each line has equal no. of entries.")
}
于 2013-02-02T17:37:15.693 に答える