我需要将多个变量(数据帧)写入不同的.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变量的输出。
答案 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)
}