Ошибка при определении функции, в которой ее вход представляет собой файл и соответствует nls: «Ошибка: нет функции для возврата, переход на верхний уровень» - PullRequest
1 голос
/ 14 мая 2019

Я пытаюсь подогнать набор данных к функции ошибки. Я успешно использовал следующий код:

erf <- function(x) 2 * pnorm(x * sqrt(2)) - 1
data <- read.csv("z0.csv")
x<-data[,1]
y<-data[,2]
y<-y-min(y)
y<-y/max(y)
x<-x[which.max(y):which.min(y)]
x<-(x-min(x))/7200
y<-y[which.max(y):which.min(y)]
m<-nls(y~a/2*(1-erf((sqrt(2)*(x-b))/c)),start=list(a=1,b=0,c=0.001))
r<-summary(m)$coefficients[3,1]
dr<-summary(m)$coefficients[3,2]

Промежуточные шаги предназначены для нормализации моих данных, чтобы сделать мое максимальное значение y одним, а мой минимальный ноль; использовать определенные данные для подгонки; и сделать преобразование для х Вейлс.

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

radius <- function(file) {
  data <- read.csv(file = paste0(file, ".csv")
  x<-data[,1]
  y<-data[,2]
  y<-y-min(y)
  y<-y/max(y)
  x<-x[which.max(y):which.min(y)]
  x<-(x-min(x))/7200
  y<-y[which.max(y):which.min(y)]
  m<-nls(y~a/2*(1-erf((sqrt(2)*(x-b))/c)),start=list(a=1,b=0,c=0.001))
  c<-summary(m)$coefficients[3,1]
  return(c)
}

Но я получаю следующие ошибки: Ошибка: неожиданный символ в:

  • Ошибка: неожиданный символ в: "data <- read.csv (file = paste0 (file," .csv ") х "</p>

  • Ошибка в nls (y ~ a / 2 * (1 - erf ((sqrt (2) * (x - b)) / c)), start = список (a = 1,: число итераций превысило максимум 50

  • Ошибка: нет функции для возврата, переход на верхний уровень

  • Ошибка: неожиданное '}' в "}"

Что я делаю не так?

...