2017-04-27 24 views
2

変数を使って多くのtxtファイルを書き込むためにRを使用しようとしています。ここR forループでファイルを書き込む

私は値を割り当て、ファイル名の一部として値を使用するRにforループを使用したいベクター

name <- c("Apple","Banana","Cat") 

あります。

for (i in length(name)){ 

"The name is i"  

assign(paste(name, i, sep = ""), i) 

write.table("i.txt") 

} 

私の期待3つのtxtファイル

Apple.txt 
Banana.txt 
Cat.txt 

各txtファイルのコンテキストを生成することで、それぞれの文です。

The name is Apple 
The name is Banana 
The name is Cat 

答えて

2

目的は3つの.txtファイルを書き込むのであれば我々はいくつかのグローバルオブジェクトを作成するassignは必要ありません。ループname直接sprintf又はpaste持つ値を作成を通じて、次いで

for (nm in name){ 

val <- sprintf("The name is %s", nm) 
#or with `paste` 
#val <- paste0("The name is ", nm) 

#write.table(val, file = paste0(nm, ".txt")) 
#this can also be with `write` that will not generate the heading 
write(val, file = paste0(nm, ".txt")) 
} 

.txtファイルに書き込むwrite.tableは、2つの行を返す理由があるためdata.frameへの変換です。ファイルまたは接続に(それが1でも行列でない場合 データフレームに変換した後に)その必須引数xを印刷はwrite.table ?write.table説明

によります。

+0

ファイルに2つの行がある理由を説明してください。最初の行は "x"、2行目は "1" "Appleという名前です" – user3631848

+0

@ user3631848 'write.table'を' write'に変更するだけで、行だけが表示されます。私はあなたが列ヘッダーを持っていたと思った – akrun

+0

@ user3631848更新されたコードを実行できますか? – akrun

関連する問題