Записать несколько загруженных переменных в разные файлы .txt - PullRequest
3 голосов
/ 27 марта 2019

Мне нужно записать несколько переменных (фреймов данных) в разные файлы .txt, названные по имени оригинальных переменных.Я пытался использовать функцию ls () для выбора желаемых переменных по шаблону, но безуспешно.Есть ли другой способ сделать это?

Используя функцию ls (), я смог создать файлы .txt с правильными именами файлов на основе моих переменных (data1_tables.txt, data2_tables.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 ]

2 голосов
/ 27 марта 2019

Что происходит, так это то, что вы фактически записываете в файлы элементы из вектора 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 голос
/ 27 марта 2019

Измените конец вашего кода на:

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

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...