2017-05-11 5 views
0

私は22種類のファイルから読み込んだ22の異なるデータフレームを持ち、オブジェクトr1〜r22という名前を付けました。今私は再びそれらを22種類のファイルに書きたいと思っています。私はループを使いたい。ここに私のスクリプトは次のとおりです。多くのデータフレームからRのループを使って多くのファイルを書き込む方法は?

for(i in 1:2) {   
    write.table(paste("r", i, sep = ""), paste("r",i,".txt",sep="") , sep = " ", 
       col.names=F, row.names=FALSE, quote=F) 
} 

これは、ファイル内のR1の値を書き込みません「R1」、それは実際にはファイル内の「R1」を書き込み、それを保存します。

どうすればいいですか教えてください。

答えて

1

は、だから今、あなたのコードが読み取られますeval(parse(text=paste("r", i, sep = "")))

paste("r", i, sep = "")を交換してみてください:あなたは、環境内の個別のオブジェクトとして全22 data.framesを持っているよう

for(i in 1:22) { 
write.table(eval(parse(text=paste("r", i, sep = ""))), paste("r",i,".txt",sep="") , 
      sep = " ",col.names=F, row.names=FALSE, quote=F) 
} 
+1

ありがとうございました!それはすごかった! – Mazza

0

サウンズ?その場合は、おそらくforループが最も簡単なオプションです。

あなたはこの種のことを頻繁にやっている場合のように、ちょっとした方法でファイルを読み込んでリストに集めた場合と同じ方法で書き出すことができます。

# assuming there is a file list like this with each element a data.frame 
file.list <- list(r1,r2,r3...r22) 

file.names <- paste(rep("r", length(file.list)), c(1:length(file.list)), sep = "") 

mapply(function(x,y) {write.table(x, y, sep = " ", col.names=F, row.names=FALSE, quote=F)}, file.list, file.names) 
関連する問題