Ссылочные аргументы в функции в R - PullRequest
0 голосов
/ 26 февраля 2019

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

Вот мой код:

#define difference function
decdf <- function(x, base, treat)  abs(ecdf(base)(x) - ecdf(treat)(x))

#create function
ks.ecdfs = function(first, second){
  #define ecdfs
  ecdf1 = ecdf(first)
  ecdf2 = ecdf(second)

  #list all x values
  all = c(first, second)

  #create empty dataframe for differences
  X = c()
  Diff = c()

  #find differences in ecdfs
  for (x in all){
    X = append(X, x)
    Diff = append(Diff, decdf(x, first, second))
  }

  #create dataframe of diffs
  ecdf.diff = data.frame(X, Diff)

  #find max of diffs
  m = max(ecdf.diff$Diff)

  #find value of max
  val = ecdf.diff$X[ecdf.diff$Diff == m]

  #plot ECDFs together with max diff marked
  plot(ecdf1, verticals=TRUE, do.points=FALSE, col='#DBBE3C', 
       xlim = range(c(first, second)), lwd=2,
       main='Comparison of ECDFs', ylab='Cum. Probability')
  plot(ecdf2, add = TRUE, verticals=TRUE, do.points=FALSE, col='#F9100A', lwd=2)
  segments(val, ecdf1(val), val, ecdf2(val), lty=2, lwd=2)
  text(val, (ecdf1(val)+ecdf2(val))/2, paste0('D = ' , m), pos=4)
  legend('bottomright', legend=c('Dist 1', 'Dist 2'), col=c('#DBBE3C','#F9100A'), 
         box.lty=0, lty=1)
}

I 'Я хотел бы заменить «Dist 1» и «Dist 2» в легенде на аргументы функции «first» и «second».Спасибо.

...