Ваши комментарии - хотя и не в настоящий момент ваш вопрос - указывают, что вы ожидаете запустить свой код в рабочем каталоге, который содержит некоторое количество подкаталогов (lecture01, lecture02 и т. Д.), Каждый из которых содержит подкаталог «метки», который, в свою очередь, содержит файл data.csv. Если это так, и ваша цель - прочитать csv изнутри каждого подкаталога, тогда у вас есть пара опций в зависимости от остальных деталей.
Случай 1: Укажите имена каталогов верхнего уровня непосредственно, если вы знаете их всех, и они потенциально своеобразные:
dirs <- c("lecture01", "lecture02", "some_other_dir")
paths <- file.path(dirs, "marks/data.csv")
Случай 2: Построить имена каталогов верхнего уровня, например, если все они начинаются с «лекции», а затем двухзначное число, и вы можете (или, в частности, пожелать) указать числовой диапазон, например. 01, хотя 15:
dirs <- sprintf("lecture%02s", 1:15)
paths <- file.path(dirs, "marks/data.csv")
Случай 3: Определить имена каталогов верхнего уровня путем сопоставления шаблона, например, если вы хотите, чтобы прочитать данные из каталога в каждом, начиная со строки «лекции»:
matched.names <- list.files(".", pattern="^lecture")
dirs <- matched.names[file.info(matched.names)$isdir]
paths <- file.path(dirs, "marks/data.csv")
После того, как у вас есть вектор пути, я бы, вероятно, использовать lapply
для чтения данных в список для дальнейшей обработки , называя каждого из них с именем базового каталога:
csv.data <- lapply(paths, read.csv)
names(csv.data) <- dirs
в качестве альтернативы, если все, что обработка вы делаете на каждом отдельном CSV делается только для его побочных эффектов, таких как изменение данных и выписывать новую версию, и особенно если вы никогда не захотите, чтобы все они были в памяти одновременно, используйте цикл.
Если этот ответ пропустит отметку, даже если это не так, было бы здорово, если бы вы могли прояснить вопрос соответствующим образом.
Предположительно, вы находитесь на Linux/unix? –
http: // stackoverflow.com/questions/12324539/указать-directory-with-setwd/12324637 # 12324637 –
@Ricardo Saporta: У меня есть как windows, так и linux –