2017-04-27 63 views
2

我想用R寫一個變量的許多txt文件。R通過for循環寫變量的文件

這裏是一個矢量

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

我想用一個for循環中的R的值和使用值分配作爲文件名的一部分。

for (i in length(name)){ 

"The name is i"  

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

write.table("i.txt") 

} 

我的期望是產生三個txt文件

Apple.txt 
Banana.txt 
Cat.txt 

每個txt文件的背景是分別句子。

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

回答

2

我們不需要assign創建一些全局對象,如果其目的是寫三篇.txt文件。遍歷namesprintfpaste直接創造價值,然後把它寫入.txt文件

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")) 
} 

之所以write.table回報兩條線是因爲轉換到data.frame的。根據?write.table描述

write.table打印其所需的自變量x(將其轉換爲數據 幀之後,如果它不是一個,也不是一個矩陣),以一個文件或連接。

+0

請問您能解釋爲什麼文件中有兩行?第一行是「x」,第二行是「1」「這個名字是Apple」 – user3631848

+0

@ user3631848只要將'write.table'改爲'write',你將只有行。我以爲你想有一個列標題 – akrun

+0

@ user3631848你可以運行更新的代碼? – akrun