2014-10-23 3 views
-1

Я прочитал файл matlab с пакетом R.matlab и получил число от него в виде списка. Я превратить его в числовой:Открытые файлы с переменными именами файлов

library(R.matlab) 

# simple case: static filename 

setwd("C:/Files/Fold") 
nc <- readMat('passvar1.mat') 

nC <- as.numeric(nc) 
nC 
## 10 

Более сложный бросок: Мне нужно открыть файл в папку в R с nC именем: C:/Files/Coordinates/CoordsRS%nC%.md.txt

Все файлы имеют одинаковое имя, кроме номера, например:

C:/Files/Coordinates/CoordsR4.md.txt 
C:/Files/Coordinates/CoordsR10.md.txt 

и, мне нужно применить операцию к этому файлу содержимое (т.е. передать в качестве параметра readMat, чтобы он мог читать их динамически)

+0

@hrbrmstr. Я не думаю, что это дубликат, как я это пробовал. он не работает. newC <- lapply ("C: /Folder/corrd/*nC.md.txt", read.table) Ошибка в файле (файл, "rt"): не удается открыть соединение Кроме того: Предупреждающее сообщение: В file (file, "rt"): не может открыть файл 'C: /.../* nC.md.txt': недопустимый аргумент – mil

ответ

0

Проще всего создать имена файлов с помощью вызова paste0 или sprintf. Например

nC <- 10 
paste0("C:/Files/Coordinates/CoordsR", nC, ".md.txt") 
# [1] "C:/Files/Coordinates/CoordsR10.md.txt" 
sprintf("C:/Files/Coordinates/CoordsR%d.md.txt",nC) 
# [1] "C:/Files/Coordinates/CoordsR10.md.txt" 

sprintf() имеет гораздо больше вариантов, когда речь идет заполнение с ведущими нулями или иначе форматирования числа, прежде чем вставить в строку. Затем вы можете перечислить эти имена файлов на readMat()

+0

Спасибо. Я не писал, что я тоже пробовал sprintf, и я получаю то, что мне нужно, но его класс является символом.> Xx <- sprintf («C:/Folder/Coordinates /% s», nC). Как использовать этот символ, чтобы открыть это имя файла в папке? Я не передаю имена файлов readMat(). Мне нужно прочитать nC из readMat() и использовать этот открытый файл nC в папке в R. – mil

+1

Просто используйте 'readMat (xx)' или 'read.table (xx)' или же вы хотите открыть файл. Почему это не работает? Что вы хотите сделать с этим путем? – MrFlick

+0

Спасибо. read.table (xx) выполнил эту работу. readMat (xx) возвращает и ошибка: rror в mat5ReadTag (this): Неизвестный тип данных. Не в диапазоне [1,19]: 11829 Кроме того: Предупреждающие сообщения: 1: В readMat5Header (это firstFourBytes = firstFourBytes): Неизвестный endian: -6. Предположим, что Бигендей. 2: В readMat5Header (это, firstFourBytes = firstFourBytes): Неизвестный тег версии MAT: 2336. Предположим, что версия 5. – mil

Смежные вопросы