Я определяю функцию в 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».Спасибо.