私は彼の最初のスクリプトを書くことを試みるRの初心者です。 forループ内で問題が発生しました。 私のコードでは、部分的に共通の名前を共有する2つのベクトルから2列のデータフレームを作成しています。私はこれらの一般的な名前のいくつか(ベクトルaで定義)に対してこれを実行するためにforループを使用します。forループwrite.csv関数のエラー
paste("A",1:4,sep="")->a
for (i in a) {
j<-grep(x= ls(pos=1), pattern=i, value=TRUE)
data.frame(do.call(cbind,mget(j)))-> k
print(k)
}
これは動作しますが、私はこのコードを使用して別のCSVファイルとしてこれらのデータ・フレームを印刷するとき、私は、問題が発生した:
Error in file(file, ifelse(append, "a", "w")) :
invalid 'description' argument
In addition: Warning message:
In if (file == "") file <- stdout() else if (is.character(file)) { :
the condition has length > 1 and only the first element will be used
を次のようにエラーが表示さ
for (i in a) {
j<-grep(x= ls(pos=1), pattern=i, value=TRUE)
data.frame(do.call(cbind,mget(j)))-> k
print(k)
write.table (k, file = paste("Results_",i, sep=''))
}
読み取り
さらに、fllwingは機能しましたが、もちろん、最後の反復の1つのcsvファイルを作成するだけです
for (i in a) {
j<-grep(x= ls(pos=1), pattern=i, value=TRUE)
data.frame(do.call(cbind,mget(j)))-> ff
print(ff)
write.table (ff, file = "results_df.csv")}
ありがとうございます!
他にも:このエラーに関する他の質問では、私は書き込みの許可が必要だと言われました。 write.csvが以前と同じディレクトリにあったので、私はそうします –
'for'ループのために使用しているインデックス変数の値を変更することによって良い結果が得られることはありません。 (それはヒントです) – joran
...また、本当に始まったら、(1) 'data.frame(cbind())'は一般的にかなり悪い考えです。 'cbind'はすべてのオブジェクトを一つの型に強制するので、data.frameを作成するのは誤解を招きやすくエラーが発生する可能性があります。(2)単一の独立したオブジェクトを保持する悪い習慣のように、ワークスペース内の同様に名前の付いたオブジェクトです。それらが関連していて、グループで計算する必要がある場合は、それらを名前付きリストに入れます。あなたがちょうど始まっていて、 'get'や 'mget'に頼っているのであれば、あなたはおそらく最善の道を選んでいないでしょう。 – joran