Только имена входных файлов, которые появляются в списке - PullRequest
0 голосов
/ 30 ноября 2011

Я пытаюсь извлечь список сайтов из фрейма данных, а затем загрузить из папки файлы .csv, соответствующие этим сайтам.

Я нашел несколько способов загрузить все файлы в данном каталоге, но не смог найти ничего, что подходящим образом отвечало бы на мой вопрос. Нет общих функций для подмножества имен файлов, как я видел в других примерах. Есть более 150 сайтов, поэтому я не хочу загружать все файлы .csv каждый раз.

Есть ли способ выбрать подмножество файлов в папке, которые соответствуют имени в списке, и загрузить только эти файлы? После загрузки этих файлов мне нужно выполнить один и тот же анализ каждого файла, поэтому я ищу способ загрузки этих файлов, чтобы сделать этот дальнейший анализ максимально эффективным.

Любая помощь будет принята с благодарностью.

    trials<-read.csv("trial_associations.csv")
    trials
    site.name    red    blue    green    yellow
    upper.hill   yes     no      yes       no
    lower.hill   yes     yes     no        yes
    upper.lake   no      no      yes       yes
    lower.lake   no      yes     yes       no

    site<-trials[trials$red=="yes",]
    sitelist<-data.frame(site[,1])

пример списка сайтов

    site.name
    upper.hill
    lower.hill
    etc.

файл примера в папке sitenames - каждый файл имеет четыре столбца с заголовками и ~ 5800 строк

    a     b     c     d
    yes   no    no    yes
    no    yes   no    no
    yes   yes   yes   yes
    no    no    yes   no

имена файлов в папке sitenames

    upper.hill.csv
    lower.hill.csv
    lower.lake.csv
    upper.lake.csv
    etc

Затем мне нужно использовать имена в списке сайтов, чтобы загрузить файлы .csv из папки sitenames в рабочем каталоге.

Я использовал

    list.files(dir)

чтобы получить список файлов в каталоге. Но я не уверен, как использовать имена в списке сайтов для доступа к определенным файлам в папке сайта.

Надеюсь, это прояснит ситуацию, спасибо

1 Ответ

2 голосов
/ 30 ноября 2011

Код, который вы, вероятно, используете для получения всех файлов, очень похож на то, что вам нужно для получения.Как правило, чтобы получить все файлы в директории, вы используете list.files('myDir') или что-то подобное.Просто запустите эту часть кода и посмотрите, каков результат.Вы увидите, что это просто символьный вектор, содержащий все имена всех файлов.

Как только вы поймете, что это легко.Вы либо получаете свой вектор символов другим способом, либо вы просто задаете этот вектор символов.Например, если требуемый список файлов находится в файле с именем «список файлов», вы можете получить имена с помощью scan.

fList <- scan('file list')

Теперь вы можете просто прочитать все эти файлы в...

dList <- lapply(fList, read.table)

... или что-то в этом роде.У вас уже есть код, который вы можете адаптировать.Если вы просто хотите получить случайное подмножество всех файлов, то этого будет достаточно:

fList <- list.files(`myDir')  #or leave out 'myDir' for working directory - this gets all files names
subfList <- sample(fList, 4)  #just get a random 4 files

Возможно, это поможет вам начать.Трудно рекомендовать что-то более точное.

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