R: использовать один файл при выполнении цикла for в списке файлов - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь создать цикл, в котором я выбираю одно имя файла из списка имен файлов и использую этот файл для запуска read.capthist, а затем discretize, fit, derived и сохраняю выходы с использованием save. Список содержит 10 файлов одинаковых строк и столбцов, единственное различие между ними - географические координаты в каждой строке.

Проблема, с которой я сталкиваюсь, заключается в том, что capt должен быть одним файлом (в пакете secr это типы 'captfile'), но я не знаю, как выбрать один файл из этого списка и заставить мой цикл распознавать его как единый объект.

Это ошибка, которую я получаю, когда пытаюсь выбрать только один файл:

Error in read.capthist(female[[i]], simtraps, fmt = "XY", detector = "polygon") : 
  requires single 'captfile'

Я не программист по образованию, я изучил R самостоятельно и много использовал переполнение стека для решения своих проблем, но я не смог понять это. Вот код, который я придумал до сих пор:

library(secr)
setwd("./")
files = list.files(pattern = "female*")
lst <- vector("list", length(files))
names(lst) <- files
for (i in 1:length(lst)) {
  capt <- lst[i]
  femsimCH <- read.capthist(capt, simtraps, fmt = 'XY', detector = "polygon")
  femsimdiscCH <- discretize(femsimCH, spacing = 2500, outputdetector = 'proximity')
  fit <- secr.fit(femsimdiscCH, buffer = 15000, detectfn = 'HEX', method = 'BFGS', trace = FALSE, CL = TRUE)
  save(fit, file="C:/temp/fit.Rdata")
  D.fit <- derived(fit)
  save(D.fit, file="C:/temp/D.fit.Rdata")
}

simtraps - список координат.

В идеале я хотел бы, чтобы у моих выходных данных были также уникальные идентификаторы, поскольку я имитирую данные и мне придется сравнивать все результаты, я не хочу, чтобы каждая итерация перезаписывала предыдущий вывод данных.

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

Любые советы будут с благодарностью приняты новичком!

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