将多个已加载的变量写入不同的.txt文件

时间:2019-03-27 19:34:19

标签: r

我需要将多个变量(数据帧)写入不同的.txt文件,并根据其原始变量名称进行命名。我尝试使用ls()函数通过模式选择所需的变量,但没有成功。还有其他方法可以做到这一点吗?

使用ls()函数,我可以根据变量(data1_tables.txt,data2_tables.txt等)使用正确的文件名创建.txt文件,但输出错误。

#create some variables based on mtcars data
data1 <- mtcars[1:5,]
data2 <- mtcars[6:10,]
data3 <- mtcars[11:20,]



fileNames=ls(pattern="data",all.names=TRUE)


for (i in fileNames) {
    write.table(i,paste(i,"_tables.txt",sep=""),row.names = T,sep="\t",quote=F) 
}

我希望创建的文件(data1_tables.txt,data2_tables.txt,data3_tables.txt)具有原始data1,data2,data3变量的输出。

2 个答案:

答案 0 :(得分:2)

发生的事情是,您实际上要写入文件的是fileNames向量中的元素(只是字符串)。如果要通过写功能将任何对象写入文件,则需要输入对象本身,而不是对象名称。

#create some variables based on mtcars data
data1 <- mtcars[1:5,]
data2 <- mtcars[6:10,]
data3 <- mtcars[11:20,]

fileNames = ls(pattern="data", all.names=TRUE) 

for(i in fileNames) {

write.table(x=get(i), # The get function gets an object with a given name.
            file=paste0(i, "_tables.txt"), # paste0 is basically a paste with sep="" by default
            row.names=T, 
            sep="\t", 
            quote=F) 
}

答案 1 :(得分:1)

将代码结尾更改为:

for (i in fileNames) {
write.table(eval(as.name(i)),paste(i,"_tables.txt",sep=""),row.names = T,sep="\t",quote=F) 

}

相关问题